黑马程序员技术交流社区
标题: 谈谈自己对OC内存的理解,可能会在面试中用到 [打印本页]
作者: yibyli 时间: 2015-9-6 21:57
标题: 谈谈自己对OC内存的理解,可能会在面试中用到
本帖最后由 yibyli 于 2015-9-6 22:00 编辑
OC不采用垃圾回收机制,而是采用引用计数的方式来管理内存,当引用计数为0的时候对象被销毁,当引用计数为1或者以上时,对象得以保持。
在Xcode4.2版本以前是采用手工引用计数,具体是通过alloc,new,copy,mutableCopy,retain,release这个几个方法来更改对象的引用计数。其中alloc和new创建一个引用计数为1的对象,retain使对象的引用计数加1,release使对象的引用计数减去1,当对象的引用计数为0的时候会调用一个dealloc的方法销毁对象。
手工引用计数采取的原则是谁负责创建,谁负责销毁,谁retain,谁负责release,道理虽然简单,但是内存管理随着代码的庞大还是很令人头痛。因此出现了自动引用计数,即所谓的ARC,由系统自动检测来保持对象和销毁对象。ARC引用了自动释放池,即在自动释放池中创建对象,当自动释放池被释放的时候,这些被创建的对象会自动被销毁。
希望有更好的答案,期待您的回答!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |