Alloc / init具有只读属性

时间:2014-05-28 05:07:19

标签: ios objective-c

我已经在.h类中声明了

@property (nonatomic, readonly) SomeClass *sup;

在.m类的init中,我可以说

_sup = [[SomeClass alloc] init];

但不是

self.sup = [[SomeClass alloc] init];

这是因为它是只读的。有什么区别?

2 个答案:

答案 0 :(得分:3)

当您使用_sup时,您正在直接访问该属性背后的变量。当您说self.sup时,您正在通过setter方法访问它,而这是您无法做到的,因为它是readonly。阅读有关属性here的更多信息。

答案 1 :(得分:0)

Readonly意味着没有创建setter方法。因此,一旦通过self.sup访问它,就意味着您正在调用一个未创建的方法。

_sup只是一个变量访问。