ARC

什么是ARC?spa

ARC的全称Auto Reference Counting. 也就是自动引用计数。那么,为何要有ARC呢?指针

Objective C的引用计数理解起来很容易,当一个对象被持有的时候计数加一,再也不被持有的时候引用计数减一,当引用计数为零的时候,说明这个对象已经无用了,则将其释放。code

ARC :ARC 是编译器特性,当编译器发现retain或者alloc,自动帮咱们插入内存管理代码:release,对象

引用计数分为两种:blog

  • 手动引用计数(MRC)内存

  • 自动引用计数(ARC)编译器

好比以下ARC代码:it

NSObject * obj;
{
    obj = [[NSObject alloc] init]; //引用计数为1
}
NSLog(@"%@",obj);

等同于以下MRC代码内存管理

NSObject * obj;
{
    obj = [[NSObject alloc] init]; //引用计数为1
    [obj relrease]
}
NSLog(@"%@",obj);

 

ARC它的判断准则:只要没有强指针指向对象,对象就会被释放编译

    指针分两种:

 

             强指针:默认状况下都是强指针,__stong(双下划线)

             弱指针:__weak

             __weak Person *p = []; NSLog(@"%@",p);  //  错误的写法

 

两端循环引用的时候:

   ARC:

       一端用strong,另外一端weak

   非ARC:

       一端用retain,另外一端assign

ARC :总结

     1>不容许调用release,retain,retainCount

 

     2>能够重写dealloc,可是不能够调用[super dealloc];

 

     3>@property参数

 

     *strong:成员变量是强指针(适用于OC对象,默认的)

 

     *weak:成员变量是弱指针(做用跟assign同样)(适用于OC对象)

 

     *assign:非对象

相关文章
相关标签/搜索