为什么不使用_xxx更改readonly属性?

时间:2017-09-14 06:54:45

标签: ios

我在.h文件中声明了一个只读属性

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

我在.m文件中实现了getter方法

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

现在,我不能使用_itemsArray更改它,为什么会这样?如果我没有实现getter方法,我可以使用_itemsArray来改变它。 enter image description here

3 个答案:

答案 0 :(得分:1)

您已为您的媒体资源实施了所有必需的访问者(如果是readonly属性,则为getter)。在这种情况下,下划线ivar不会自动合成。

答案 1 :(得分:0)

简而言之,您无法更改自己的价值,或者无法将{strong> setter 方法应用于readonly属性。

答案 2 :(得分:0)

我认为readonly属性不实现setter方法,因此不会创建itemsArray属性映射的iVar。另一方面,此属性映射的iVar名称未定义。如果要使用'_itemsArray'作为属性的iVar名称。将' @synthesize itemsArray = _itemsArray;' 语句写入.m文件后。没有发生错误。