簡體   English   中英

那“每個財產都有支持變量”是真的嗎?

[英]Is that “every property have a backing variable” true?

我從這本書中讀到了 在此處輸入圖片說明

但我也讀到,在某些情況下,屬性不會自動生成實例變量。 在此處輸入圖片說明

那么,如果這是真的,那么財產在哪里存儲了價值呢?

第一句本身是錯誤的。 它應該說...“在大多數情況下,屬性由成員變量支持。

第二句聲稱是有效的例外。 是真的。


顯然,第二句話是在談論auto-sythensis。 您當然可以使用@synthezise為所有內容生成一個變量,也可以使用@dynamic告訴編譯器不要這樣做

您發布的第二段是正確的。 僅當編譯器至少負責getter / setter方法中的一個時,實例變量才會自動合成。 如果您決定覆蓋這兩種方法,並且仍然希望有一個與您創建的屬性一起使用的實例變量,則需要手動進行合成,如下所示:

@synthesize variableName;

請注意,如果按原樣使用@synthesize子句(不帶'='),則將創建的實例變量將具有完全相同的名稱(在本例中為variableName )。 如果您想為實例變量賦予與創建的屬性不同的名稱,則可以添加所需的任何名稱,如下所示:

@synthesize variableName = someOtherName;

在這種情況下,屬性名稱將為variableName ,而實例變量名稱將為someOtherName 約定是將實例變量命名為與屬性相同的名稱,僅在開頭加下划線(在本例中為_variableName )。 如果允許編譯器為您創建變量,但又讓它負責getter / setter方法中的至少一個,則它也是變量名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM