首页 > 代码库 > ARC 与非ARC 之间的转换,以及如何使一个项目中,ARC与非ARC共存

ARC 与非ARC 之间的转换,以及如何使一个项目中,ARC与非ARC共存

  1,非ARC 转 ARC的操作

  XCode 的 Edit -- Refactor -- Convert to Object-C ARC (注意,一般在一个大项目中,很少直接使用此方法,其正确率有待考虑,毕竟手动内存管理较为复杂,如果出现错误,很难排查)

  2,ARC 与 非ARC共存

  需求来源:当我们在项目中使用一些古老的框架时,该框架就可能使用手动内存管理.而公司开发的项目可能采取ARC.此时如何将两者整合到一起?

  解决方法:选中改项目---Build Phase -- 双击非ARC 文件,输入 -fno-obj-arc即可保证不会因为当前使用了ARC,对非ARC文件报错.

 

  提起ARC,下面简单谈下个人对ARC的理解.

  可以简单的理解为,有強指针指向的对象不会被系统回收,而没有強指针指向(弱指针或者没有)都会被系统回收

  一般默认的指针就是强指针(strong),而使用weak修饰的指针为弱指针.

  然而,并不是你使用了ARC就不会出现内存泄漏的情况.什么是内存泄漏?就是该对象已经不再使用了,而还存在内存中,占用内存资源.这叫内存泄漏.那么,如果你已经不使用该对象了,还一直使用強指针指向它,又会怎样?如果出现循环引用(互相強指针指向对方)呢?又会怎样?

  所以,在使用过程中,依然要分析什么时候使用strong,什么时候使用weak.

  上文提到的循环引用的解决方案:一方设置为weak,一方设置为strong即可.