self.array 和 _array的区别 川长思鸟来 2022-08-21 14:56 116阅读 0赞 </pre><p>今天早上遇到一个问题,在给数组array添加元素的时候,发现如下情况</p><p>在有懒加载的前提下:</p><p><span style="color:rgb(51,51,51); font-family:'Helvetica Neue',Helvetica,STheiti,微软雅黑,黑体,Arial,Tahoma,sans-serif,serif; font-size:14px; line-height:24px"></span></p><pre name="code" class="objc">[self.array addObject: @"1"]; self.array可以通过这个方法添加对象成功, [_array addObject: @"1"] 而\_array添加对象不成功? 通过查找资料,发现self.array 和 \_array的访问的区别: 1.内存机制的不同 self.array相当于〔self getArray〕,\_arr相当于self->\_array。一个是访问属性,一个是访问成员变量。 使用self.array时会执行get方法,也就是(NSArray \* )array\{\}这个方法。 如果在懒加载的时候,最后返回的是return self.array;这样会进入一个死循环 相当于 - (NSarray *)array{ ........ return [self array]; } 注意: 如果没有重写(NSArray \* )array\{\},self.array和\_array效果一样。、 2.KVO的区别 self.array 会激活通知中心 。 \_array 就不会 。 建议:如果没有使用懒加载,直接初始化的话,两者在添加元素方面是一样的,但是直接访问不会触发set和get方法,个人建议是除了在set和get方法里使用下划线直接访问变量,外面都使用self.来调用
还没有评论,来说两句吧...