我已经在.h类中声明了
@property (nonatomic, readonly) SomeClass *sup;
在.m类的init中,我可以说
_sup = [[SomeClass alloc] init];
但不是
self.sup = [[SomeClass alloc] init];
这是因为它是只读的。有什么区别?
答案 0 :(得分:3)
当您使用_sup
时,您正在直接访问该属性背后的变量。当您说self.sup
时,您正在通过setter方法访问它,而这是您无法做到的,因为它是readonly
。阅读有关属性here的更多信息。
答案 1 :(得分:0)
Readonly意味着没有创建setter方法。因此,一旦通过self.sup访问它,就意味着您正在调用一个未创建的方法。
_sup只是一个变量访问。