黑马程序员技术交流社区

标题: OC 内存 [打印本页]

作者: 1722413885    时间: 2014-4-8 17:40
标题: OC 内存
本帖最后由 1722413885 于 2014-4-8 23:58 编辑

[super release];这段代码的是什么意思,是怎么运行的,为什么要放到最后?
作者: 一只小菜鸟    时间: 2014-4-8 17:58
[super release]调用父类的release方法,释放一次对象,retaincount-1;
在对象释放之前,可能要做点什么,比如nslog(@"dasdsa");什么的。
如果放在前面,对象可能已经被销毁了。
作者: lixiangzhou    时间: 2014-4-8 18:02
[super release]; // 用来释放父类对象的内存资源

放在最后的原因:
[super release];如果放在前面的话,后面子类方法的调用可能要用到父类的资源,而发现父类的资源已经释放,就会报错,顾放在最后。
作者: 程浩    时间: 2014-4-8 18:07
本帖最后由 程浩 于 2014-4-8 18:09 编辑

[super release] 放在最后也是因为逻辑上好处理
写代码的时候你把创建父类的子类对象时retain和这个对应一下,然后在这中间写上你的代码,不是容易理解和处理么
而且就像三楼说的,你不放在最下面,而是放在你操作父类对象代码的前面就release,刚好减成了0,那么你就用不了父类方法了,还会出僵尸对象和野指针的可能,所以,放在最后吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2