self与release用法
来源:互联网 发布:算法 下载 编辑:程序博客网 时间:2024/06/04 19:08
self release其实下面的东西都跟内存管理有关,可以参看其他文章
看不出[self.xxx release]和[xxx release]的用法有什么本质的差别。self.xxx多一个步骤:通过getter得到成员变量。而通常情况下,getter也只是直接返回相应的对象。这点楼主自己也说明了。
建议不要在这个问题上太过纠结,遵守常规约定即可。
1. 一般情况下,对于类型是对象的成员变量,如果设置了对应的@property,就用以下这种格式释放:
1. self.xxx = nil;
复制代码
只要setter方法正确,这段代码自然能release对象,顺便还能赋nil;
2. 如果没有设置@property,就是直白的方法
1. [xxx release];
2. xxx = nil;
复制代码
如果是在dealloc方法里,那么赋为nil也可以省了。
看通过Xcode的模版创建的项目,在AppDelegate的dealloc方法中,_window是怎样释放的。
3. 使用@property,可以不定义成员变量。如果定义了,还是建议加前缀和后缀。Apple习惯加前缀“_”。Google的代码约定是后缀“_”。 加后缀好处多多,可以避免局部变量的变量名冲突,也方便自己和别人阅读。
一个对象进入dealloc阶段的时候,他的状态是不稳定的,此时不应该再调用自身的任何方法,在dealloc里调用[self.xxx release]的话,假设[self getXxx]方法依赖一个成员变量Y,而变量Y却已经被释放,那么你的程序就可能crash了;
看不出[self.xxx release]和[xxx release]的用法有什么本质的差别。self.xxx多一个步骤:通过getter得到成员变量。而通常情况下,getter也只是直接返回相应的对象。这点楼主自己也说明了。
建议不要在这个问题上太过纠结,遵守常规约定即可。
1. 一般情况下,对于类型是对象的成员变量,如果设置了对应的@property,就用以下这种格式释放:
1. self.xxx = nil;
复制代码
只要setter方法正确,这段代码自然能release对象,顺便还能赋nil;
2. 如果没有设置@property,就是直白的方法
1. [xxx release];
2. xxx = nil;
复制代码
如果是在dealloc方法里,那么赋为nil也可以省了。
看通过Xcode的模版创建的项目,在AppDelegate的dealloc方法中,_window是怎样释放的。
3. 使用@property,可以不定义成员变量。如果定义了,还是建议加前缀和后缀。Apple习惯加前缀“_”。Google的代码约定是后缀“_”。 加后缀好处多多,可以避免局部变量的变量名冲突,也方便自己和别人阅读。
一个对象进入dealloc阶段的时候,他的状态是不稳定的,此时不应该再调用自身的任何方法,在dealloc里调用[self.xxx release]的话,假设[self getXxx]方法依赖一个成员变量Y,而变量Y却已经被释放,那么你的程序就可能crash了;
一般来说,在对象init与dealloc时,处于不稳定状态,应该直接访问变量,而不使用getter和setter方法
“双语播放器”已在app store上架,欢迎大家前去下载(主要用于看电影,学英语,程序员一定要学好英语!)
这里是链接:
https://itunes.apple.com/cn/app/shuang-yu-bo-fang-qi-kan-dian/id950279764?mt=8
- self与release用法
- self的用法与意义
- IOS 点语法 release 与retain self 的解析
- self与self class有什么用法上的区别
- 关于self.用法与内存管理
- self.用法
- self用法
- iOS开发之self.abc = nil与[_abc release]的区别
- [ios]iOS开发之self.abc = nil与[_abc release]的区别【转】
- iOS---self与self class有什么用法上的区别
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- iOS中nil与release的区别与用法
- 图的存储方式
- 安装中出现:Ignoring disk sda,不认硬件问题解决
- 遇见未知的自己(一)
- metro client
- java interface使用说明
- self与release用法
- vmware安装ubuntu不能上网的问题
- linux 安装adobe flash-plugin
- Android 2.3状态栏中添加menu home back快捷键
- 基于jquery框架、google chart tools图形报表gvChart的应用心得
- YUV格式大全
- Android手机分辨率问题
- ADS开始不能够调试汇编的代码
- 网络传输协议概述——第三讲:TCP/IP协议之链路层详解