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