2017-09-14 53 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文件中。没有错误发生。

相关问题