ARC

什么是ARC?

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

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

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

引用计数分为两种:

  • 手动引用计数(MRC)

  • 自动引用计数(ARC)

比如如下ARC代码:

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:非对象

 

转载于:https://www.cnblogs.com/lanmaokomi/p/9056895.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>