当前位置:  开发笔记 > 编程语言 > 正文

Objective C _underscore vs self.variable

如何解决《ObjectiveC_underscorevsself.variable》经验,为你挑选了1个好方法。

我知道之前已经提出过这个问题,但可能不是在同一个背景下.我的问题是我有一个单例类,在应用程序的生命周期中只有dipatched_once.在类中,我有一些方法正在访问实例变量并在它们已在实例上设置时进行操作.这是我尝试访问它们的示例:

// .m文件:

接口:

@property (nonatomic, assign, readwrite) BOOL userLoggedIn;

实施://方法:

-(void)someMethod{
    if(!_userLoggedIn){
    } 
    else {
    }
}

我知道我也可以使用self来评估这样的值:

-(void)someMethod{
    if(self.userLoggedIn){
    } 
    else {
    }
}

想知道哪种方式是正确的访问价值?我没有合成属性,因为它们都只在.m文件中的接口中声明.谢谢您的帮助!



1> bbum..:

这取决于.

你想要调用访问器吗? _variable是直接访问.self.variable调用-variable,由编译器自动合成.

当值发生变化时,前者不会触发KVO.后者确实如此.这可能是一个功能或反功能.

但是,无论您选择哪种方式,尤其是写入操作,都要保持一致,否则您将来会追踪错误.


一般规则:

直接访问-init/-dealloc

在其他地方通过setter/getter(点语法)访问


另请注意,直接访问不会受到尊重atomic.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有