iOS 中内存管理(ARC)
ARC
ARC 是新的 LLVM3.0 编译器的一项特性,在工程中使用非常简单,不用再写release
、retain
、autorelease
三个关键字。当开启 ARC 时,编译器
将自动在代码合适的地方插入release
、retain
和autorelease
。
ARC 注意点和优点
ARC 注意点
ARC 是编译器的特性,而不是运行时的特性
ARC 不是其他语言中的垃圾回收,有着本质区别,其他语言是定时查看,ARC 就是写好的代码,直接执行就可以
ARC 优点
完全消除了手动管理内存的繁琐
基本上能够避免内存泄漏
有时还能更加快速,因为编译器还可以执行某些优化
ARC 的判断原则
只要没有强指针指向对象,对象就会被释放
强指针
复制代码
复制代码
弱指针(在开发中,千万不要使用一个弱指针保存刚刚创建的对象,会被立即释放)
复制代码
循环引用
由于对象间彼此引用,无法释放,所以,循环引用会引发内存泄漏
如果 A 对象拥有 B 对象,而且 B 对象又拥有 A 对象,此时会形成循环
retain
复制代码
如何解决这个问题,不要让 A retain B, B retain ARC 中保存对象不用
assign
,用weak
,assign
是专门用于保存基本数据类型的,保存对象用weak
复制代码
版权声明: 本文为 InfoQ 作者【NewBoy】的原创文章。
原文链接:【http://xie.infoq.cn/article/ede9f395179703f9183134a7b】。文章转载请联系作者。
评论