2017-09-14 55 views
-1

我宣佈一個只讀屬性,在.h文件中爲什麼不使用_xxx更改只讀屬性?

@property (nonatomic, strong, readonly) NSArray *itemsArray;

我.m文件實現getter方法現在

- (NSArray *)itemsArray { return [[self dataArray] copy]; }

,我不能用_itemsArray改變它,這是爲什麼那?如果我沒有實現getter方法,我可以使用_itemsArray來改變它。 enter image description here

+0

這就是(計算)**只讀**屬性的目的。 – vadian

+0

我沒有使用setter方法來改變它,如果我沒有手動實現getter方法,_itemsArray = self.dataArray沒有錯誤,爲什麼? – coderL

+0

設置一個計算只讀屬性是一個矛盾的術語。 – vadian

回答

1

你已經實施了所有需要的存取器爲您的財產(getter在只讀屬性的情況下)。在這種情況下,下劃線伊娃不會自動合成。

+0

謝謝,我明白了。 – coderL

0

總之你不能改變你的價值,或者無法與readonly屬性應用於的setter方法

+0

如果我沒有手動實現getter方法,'_itemsArray = self.dataArray'沒有錯誤 – coderL

0

我認爲readonly屬性沒有實現setter方法,因此不會創建itemArray屬性映射的iVar。另一方面,這個屬性映射的iVar名稱是未定義的。如果您想使用'_itemsArray'作爲屬性的iVar名稱。寫完之後'@synthesize itemsArray = _itemsArray;'聲明到.m文件中。沒有錯誤發生。

相關問題