黑马程序员技术交流社区
标题:
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