self 和 _
来源:互联网 发布:星辰0灯尤格萨隆数据 编辑:程序博客网 时间:2024/05/30 23:52
使用@property声明属性时,系统已经自动帮我们生成set,get方法。
同时我们发现在我们访问我们声明的变量时,会有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(自动管理内存)的情况下虽然不存在上述问题,但从编码规范来考虑,还是注意点儿的好。
1 0
- self 和 _
- self. 和 _ 的思考
- self 和 _的区别
- self.和_的区别(self和下划线的区别)
- self.***和_***的使用和区别
- self.属性名和_属性名的区别
- IOS 中self. 和_访问变量的区别
- ObjectiveC中的self.变量和_变量的区别
- self点语法和下划线_的区别
- self.方法和_对变量的引用的区别
- iOS中_(下划线)和self.的区别
- self和[self class]
- new与alloc init,[NSArray array] 和 [[NSArray alloc]init] 及 self. 和 _ 的区别
- ios 私有变量的发展历史以及self. 和 _的区别
- Python __str__(self)和__unicode__(self)
- Python __str__(self)和__unicode__(self)
- Python __str__(self)和__unicode__(self)
- Swift3.0 Self和self的区别
- 常用正则表达式
- 任意修改PPT 2007中的剪贴画
- 项目三大文档: 项目章程, 初步的项目范围说明书 ,详细范围说明书,项目计划书
- Linux档案权限与目录配置
- app 上架到AppStore被拒绝的各种原因
- self 和 _
- Codeforces Round #357 (Div. 2) D. Gifts by the List
- cocos2d-x 3.x学习之TintAction
- Android笔记之开发中处理异常并写入本地log文件
- ajax使用之动态显示商品信息
- response常见应用、response细节、输出随机图片、定时刷新网页
- 怎样查看交叉编译器的版本?
- JNIEnv解析
- iOS开发技巧--禁止系统头文件被不小心修改