OC内存管理ARC

  • Post author:
  • Post category:其他





1.什么是ARC

  • Automatic Reference Counting,自动引用计数,即ARC,在WWDC2011和iOS5引入的最大的变革和最激动人心的变化。ARC是新的LLVM 3.0编译器的一项特性,使用ARC,可以说一 举解决了广大iOS开发者所憎恨的手动内存管理的麻烦。

    • 手动管理内存, 可以简称MRC (Manual Reference Counting)

  • 在工程中使用ARC非常简单:只需要像往常那样编写代码,只不过永远不写

    retain,release和autorelease

    三个关键字就好~这是ARC的基本原则

  • 当ARC开启时,编译器将自动在代码合适的地方插入retain、release和autorelease,而作为程序猿,完全不需要担心编译器会做错(除非开发者自己错用ARC了)




2.ARC的注意点和优点

  • ARC的注意点

    • ARC是编译器特性,而不是运行时特性
    • ARC不是其它语言中的垃圾回收, 有着本质区别
  • ARC的优点

    • 完全消除了手动管理内存的烦琐, 让程序猿更加专注于app的业务
    • 基本上能够避免内存泄露
    • 有时还能更加快速,因为编译器还可以执行某些优化



3.ARC的判断原则

  • ARC的判断原则

    • 只要还有一个强指针变量指向对象,对象就会保持在内存中
  • 强指针

    • 默认所有指针变量都是强指针
    • 被__strong修饰的指针
     Person *p1 = [[Person alloc] init];
     __strong  Person *p2 = [[Person alloc] init];
    
  • 弱指针

    • 被__weak修饰的指针
    __weak  Person *p = [[Person alloc] init];
    
  • 注意:当使用ARC的时候,暂时忘记“引用计数器”,因为判断标准变了。




4.MRC转ARC

Xcode 功能提供了将MRC转换成ARC的功能,项目文件较多的情况下不一定能够转换成功

在这里插入图片描述



版权声明:本文为crazy_zhangcong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。