我宣布一个只读属性,在.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