黑马程序员技术交流社区

标题: 关于手动计数引用和自动释放池总结 [打印本页]

作者: gclforios    时间: 2015-5-21 23:21
标题: 关于手动计数引用和自动释放池总结
如果需要保持一个对象不被销毁,可以使用retain,在使用完对象后需要使用release进行释放;
使用release进行释放对象时,对象并不一定立刻被销毁,只有引用计数变为0时才有系统调用dealloc进行释放;

自动释放池结束时会向对发送autorelease的所有的对象发送release消息,如果池中某个对象引用计数变为0,则系统调用dealloc销毁该对象。
自动释放池结束时对池中对象发送release消息也不一定能够销毁所有的对象,因为某个对象引用计数可能还不为0;
当程序终止时所有的对象都被销毁;
对使用alloc  retain  copy方法的任何对象,以及具有retain和copy的属性的对象释放时,需要dealloc方法使得在对象释放的时候能够释放实例变量
作者: wangguanyang    时间: 2015-5-21 23:38
一句话:谁return,谁release.
作者: hehelaicaicai    时间: 2015-5-22 09:20
感谢楼主分享,内存这块一直晕晕的
作者: Emma    时间: 2015-5-22 14:36
感谢分享,牛人
作者: su199325    时间: 2015-5-22 21:27
先收下了
作者: yi95392    时间: 2015-5-22 21:57
楼主有了ARC,还需要内存管理吗?什么情况下需要自己管理呢?
作者: gclforios    时间: 2015-5-23 22:50
yi95392 发表于 2015-5-22 21:57
楼主有了ARC,还需要内存管理吗?什么情况下需要自己管理呢?

ARC有缺点:存在释放内存时间不确定性(不知道什么时候系统自己释放内存)和释放内存顺序不确定性(要释放的多个内存对象没有固定的顺序)

对于什么时候需要自己管理这方面我也不是太清楚!等我弄明白了再答复!!
作者: nsswift    时间: 2015-5-24 08:47
灌水来学习
作者: 何志祥    时间: 2015-5-26 12:09
autrelease~~~~~~~~~~~~~     
作者: 追随自然    时间: 2015-5-26 23:31
前来学习!




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