iOS ARC的使用

--------ARC的使用

1.ARC的基本概念

          ARCAutomatic Reference Counting自动引用计数,使用ARC,不再需要retain,release,autorelease,因为编译器会在合适的时候自动插入retain,release

        ARC黄金法则:只要还有一个变量(指针)指向对象,对象就会保存在内存中.当指针指向新值,或者指针不再存在时,相关联的对象就会自动释放。这条规则对于实例变量、synthesize属性、本地变量都是适用的。

(1)ARC中,dealloc方法中不允许调用[super    dealloc]。KVO和通知仍然需要在dealloc方法中移除

(2)ARC中,不允许用retainCount属性,打印引用计数

(3)ARC中,不允许使用retain、release、autorelease,copy可以使用

2.strong关键字的使用

     strong强引用,strong修饰指向的对象,会将此对象retain

    默认所有实例变量和本地变量都是strong类型的指针

3.weak关键字的使用

    * 当一个弱引用指向的对象,未销毁时,向对象发送消息,会自动变为强引用

    * 当一个弱引用指向的对象被销毁时,弱引用本身会自动的赋值为nil

    __unsafe_unretained关键字等同于assign,功能和weak几乎一样

    weak与__unsafe_unretained的相同点:他们修饰的变量,当给此变量赋值的时候,此变量不会自动插入retain操作

    weak与__unsafe_unretained的区别:weak关键字指向的对象销毁掉以后,此变量会自动设置为nil,防止野指针调用。而用__unsafe_unretained关键字指向的对象销毁掉以后,次变量不会设置为nil,会导致野指针调用

    weak关键字总结:weak可以防止循环引用,典型的例子是delegate模式,代理对象delegate应该设置成weak

4.property的修饰符总结

(1)strong:等同于”retain”,属性成为对象的拥有者

(2)weak:属性是weak  pointer,当对象释放时会自动设置为nil,记住Outlet应该使用weak

(3)__unsafe_unretained:等同于之前的”assign”,只有iOS4才应该使用

(4)copy:和之前的copy一样,复制一个对象并创建strong关联

(5)assign:对象不能使用assign,但基本数据类型仍然可以使用

(6)注意:retain在ARC中也可以使用,但是不能单独对对象使用retain

5. MRCARC的混用

  * 把MRC的代码转换成ARC的代码,删除内存管理操作(手动)

  * 在ARC项目中继续使用MRC编译的类,在编译选项中标识MRC文件即可"-fno-objc-arc"

  * 在MRC项目中继续使用ARC编译的类在编译选项中标识MRC文件即可"-fobjc-arc"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值