我宣佈一個只讀屬性,在.h文件中爲什麼不使用_xxx更改只讀屬性?
@property (nonatomic, strong, readonly) NSArray *itemsArray;
我.m文件實現getter方法現在
- (NSArray *)itemsArray { return [[self dataArray] copy]; }
,我不能用_itemsArray改變它,這是爲什麼那?如果我沒有實現getter方法,我可以使用_itemsArray來改變它。
我宣佈一個只讀屬性,在.h文件中爲什麼不使用_xxx更改只讀屬性?
@property (nonatomic, strong, readonly) NSArray *itemsArray;
我.m文件實現getter方法現在
- (NSArray *)itemsArray { return [[self dataArray] copy]; }
,我不能用_itemsArray改變它,這是爲什麼那?如果我沒有實現getter方法,我可以使用_itemsArray來改變它。
總之你不能改變你的價值,或者無法與readonly
屬性應用於的setter方法。
如果我沒有手動實現getter方法,'_itemsArray = self.dataArray'沒有錯誤 – coderL
我認爲readonly屬性沒有實現setter方法,因此不會創建itemArray屬性映射的iVar。另一方面,這個屬性映射的iVar名稱是未定義的。如果您想使用'_itemsArray'作爲屬性的iVar名稱。寫完之後'@synthesize itemsArray = _itemsArray;'聲明到.m文件中。沒有錯誤發生。
這就是(計算)**只讀**屬性的目的。 – vadian
我沒有使用setter方法來改變它,如果我沒有手動實現getter方法,_itemsArray = self.dataArray沒有錯誤,爲什麼? – coderL
設置一個計算只讀屬性是一個矛盾的術語。 – vadian