我知道之前已经提出过这个问题,但可能不是在同一个背景下.我的问题是我有一个单例类,在应用程序的生命周期中只有dipatched_once.在类中,我有一些方法正在访问实例变量并在它们已在实例上设置时进行操作.这是我尝试访问它们的示例:
// .m文件:
接口:
@property (nonatomic, assign, readwrite) BOOL userLoggedIn;
实施://方法:
-(void)someMethod{ if(!_userLoggedIn){ } else { } }
我知道我也可以使用self来评估这样的值:
-(void)someMethod{ if(self.userLoggedIn){ } else { } }
想知道哪种方式是正确的访问价值?我没有合成属性,因为它们都只在.m文件中的接口中声明.谢谢您的帮助!
这取决于.
你想要调用访问器吗? _variable
是直接访问.self.variable
调用-variable
,由编译器自动合成.
当值发生变化时,前者不会触发KVO.后者确实如此.这可能是一个功能或反功能.
但是,无论您选择哪种方式,尤其是写入操作,都要保持一致,否则您将来会追踪错误.
一般规则:
直接访问-init/-dealloc
在其他地方通过setter/getter(点语法)访问
另请注意,直接访问不会受到尊重atomic
.