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了;

一般来说,在对象init与dealloc时,处于不稳定状态,应该直接访问变量,而不使用getter和setter方法



“双语播放器”已在app store上架,欢迎大家前去下载(主要用于看电影,学英语,程序员一定要学好英语!)

这里是链接:

https://itunes.apple.com/cn/app/shuang-yu-bo-fang-qi-kan-dian/id950279764?mt=8


原创粉丝点击