美文网首页
在对象内部尽量直接访问实例变量

在对象内部尽量直接访问实例变量

作者: 奶茶007 | 来源:发表于2017-02-23 10:05 被阅读13次

    在对象之外访问实例变量,总是应该通过属性。

    笔者建议,在读取实例变量采用直接访问的形式,在设置实例变量通过属性。

    直接访问实例变量不经过Objective-C的“方法派发”,所以速度比较快;但是直接访问实例变量绕过相关属性所定义的“内存管理语义”。比如:在ARC下直接访问一个声明为copy属性,那么并不会直接拷贝该属性,只会保留新值释放旧值;直接访问
    实例变量,不会触发“键值观测”。

    通过属性访问有助于排查与之相关错误,可以给“获取“和”设置方法“新增”断点“。

    注意地方:
    1,初始化方法中应该直接访问实例变量,因为子类可能会”覆写“设置方法。但是某些情况必须初始化方法调用设置方法:如果待初始化的实例变量声明在超类中,无法在子类中直接访问实例变量,需要调用”设置方法“。
    2,”惰性初始化“,必须通过”获取方法“来访问属性,否则实例永远不会初始化。

    - (NSMutableArray *)myOrderAarray{
        if (_myOrderAarray == nil) {
            _myOrderAarray = [NSMutableArray array];
        }
        return _myOrderAarray;
    }
    

    3,在初始化方法已dealloc方法中,总是应该直接通过实例变量来读写数据。

    相关文章

      网友评论

          本文标题:在对象内部尽量直接访问实例变量

          本文链接:https://www.haomeiwen.com/subject/plivwttx.html