self和下划线的用法区别
2014-11-20 14:44
866 查看
在最新的xcode中,已经不需要我们自己去写 set,get 方法,,系统已经自动帮我们生成set,get方法。
同时我们发现在我们访问我们声明的变量时,会有self. 和 以"_"开头的访问方式,那么这两种方式到底有什么样的区别呢?我们来一起看一下:
在我们最后dealloc中release的时候,引用计数只减了一次,并没有完成全部释放,这样就造成了内存泄漏的问题。
同时我们发现在我们访问我们声明的变量时,会有self. 和 以"_"开头的访问方式,那么这两种方式到底有什么样的区别呢?我们来一起看一下:
@property (retain, nonatomic) NSMutableArray *nameArray;self.nameArray是访问属性的,而_nameArray是访问实例变量的.属性是实例变量加上GET,SET方法的一个整合体,他主要是承担一个外部访问的一个接口!实例变量只能在本类中才可以访问,外部不可以访问!
总的原则:
在类内部访问变量的时候用“_”;在类外部也就是其他类里访问这个类的变量时用“.” 语法;注意事项:
手动管理内存的情况下:
使用“.”语法来初始化变量的时候,会产生内存泄漏的问题:self.nameArray = [NSMutaleArray alloc] init];上述代码,造成的问题是,在self.nameArray的时候相当于调用了set方法,引用计数+1,后面alloc的时候,引用计数再次+1。
在我们最后dealloc中release的时候,引用计数只减了一次,并没有完成全部释放,这样就造成了内存泄漏的问题。
解决方法:就是用“_”来初始化以及访问变量,这样就不会产生内存问题,虽不是什么高明的办法,但的确有效。
_nameArray = [NSMutaleArray alloc] init];上述便是“.”和“_”在使用的时候的简单区别。如果是在ARC(自动管理内存)的情况下虽然不存在上述问题,但从编码规范来考虑,还是注意点儿的好。
相关文章推荐
- self和下划线的用法区别
- self和下划线的用法区别
- ios-基础用法之【6】-self. 与 下划线的区别
- self和下划线的用法区别
- 懒加载及self.和下划线区别
- 举例说明 this,self,parent 的区别用法
- yield self和instance_eval用法区别
- iOS中self.xxx 和 _xxx 下划线的区别
- iOS中self.和下划线的区别
- self,parent,this的区别和用法
- iOS中self.和下划线的区别
- iOS中self.和下划线的区别
- OC 中self. 与 下划线的区别
- self.和_xxx的用法的区别
- ios下划线和self中的区别
- OC 中self. 与 下划线的区别
- 关于self点操作访问和下划线访问的区别
- Object-c之id ,instancetype,SEL,_cmd;self,super几种类型的区别及用法
- ios self.和下划线的区别
- OC 中self. 与 下划线的区别