ARC基本概念

作者: 越天高 | 来源:发表于2019-02-23 20:54 被阅读7次

    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的时候,暂时忘记“引用计数器”,因为判断标准变了。

    ARC快速入门

    1.ARC机制判断

    • IOS5以后,创建项目默认的都是ARC


      Snip20150625_2.png
    • ARC机制下有几个明显的标志:
      1.不允许调用对象的 release方法
      2.不允许调用 autorelease方法
      3.再重写父类的dealloc方法时,不能再调用 [super dealloc];

    2.ARC快速使用

    int main(int argc, const char * argv[]) {
        // 不用写release, main函数执行完毕后p会被自动释放
        Person *p = [[Person alloc] init];
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:ARC基本概念

        本文链接:https://www.haomeiwen.com/subject/xbepyqtx.html