self.array 和 _array的区别
来源:互联网 发布:豫广网络维修电话 编辑:程序博客网 时间:2024/06/06 05:40
</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.来调用
0 0
- self.array 和 _array的区别
- Swift3.0 Self和self的区别
- new与alloc init,[NSArray array] 和 [[NSArray alloc]init] 及 self. 和 _ 的区别
- self.和_的区别(self和下划线的区别)
- Self和Sender的区别
- self :: 和 this-> 的区别
- this和self的区别
- self.和下划线的区别
- self和super的区别
- self 和 _的区别
- self和static的区别
- $this和self的区别
- static 和 self的区别
- [self alloc]和[[self class] alloc]的区别
- self.navigationController.view 和 self.view的区别
- self.navigationController.view 和 self.view的区别
- cell里面 self 和self.contentview的区别
- self.navigationItem和self.navigationController.navigationItem的区别?
- mysql大数据处理过程的注意事项
- 69个Spring面试题
- 如果有人问你数据库的原理,叫他看这篇文章
- 试试LaTex
- 数据库oracle与mysql在语法上的区别
- self.array 和 _array的区别
- IOS 集合视图指南2:集合视图基础
- Android Fragment 你应该知道的一切
- hi3531 添加uart3
- 数据结构之二叉树的递归建立和遍历(续)
- asp 提示 没有权限: 'CreateObject'
- Android-笔记-160506
- java线程——synchronized的4种用法
- SpringMVC-intercepter配置