码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C(9)内存管理之ARC

时间:2016-02-28 17:07:23      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:objective-c   xcode   ios      对象   面向对象   

  • ARC机制及判断准则

ARC:Auto Reference Counting 自动引用计数

是一种编译器机制,在编译过程中,为我们的代码添加retain、release、autorelease等方法


在iOS7.0之后强制使用,使程序员不用再关心内存管理,要求:

    1)不能使用retain release等操作引用计数的方法

    2)不可以使用autorelease方法,但能够使用自动释放池

    3)重写dealloc方法中不能再使用[super dealloc]


判断准则:

     只要没有强指针指向对象,就会释放对象

强指针:__strong (默认)

弱指针:__weak


不要出现这样的代码:

__weak Person *p = [[Person alloc] init];


ARC机制下不允许调用方法autorelease,但并没有舍弃@autoreleasepool

     ARC仅仅是在编译时帮助你加入retain/release/autorelease的代码调用。

     所以,ARC之下使用@autoreleasepool依然有效,保证池子中的对象延迟释放。


  • @property的内存管理参数

@property的内存管理参数strong表示强指针属性,weak表示弱指针参数。

     简单记忆:属性为OC对象时

          使用strong代替retain

          使用weak代替assign。使用weak参数解决循环引用问题

   MRC:

     retain:release属性旧值,retain属性新值

     assign:直接赋值,不改变引用计数 (默认)

          一般用于非OC对象,以及不占有对象的情况下

     copy:release旧值,copy新值,一般用于NSString

   ARC:

     strong:强指针,相当于retain,用于对象

     weak:弱指针,用于对象

     assign:用于非OC对象

     copy:用于NSString



  • MRC与ARC

将MRC项目修改为ARC:

     Xcode edit-》refactor—》Convert to OC ARC

    技术分享

让ARC项目中的某些.m文件不使用ARC

     项目配置中—》Build Phases—》Compile Sources中

    技术分享

     为指定的.m文件设置Compiler Flags:-fno-objc-arc

让非ARC项目中的某些.m文件使用ARC:

     Compiler Flags:-f-objc-arc

 


本文出自 “teacherAn” 博客,请务必保留此出处http://annmeng.blog.51cto.com/3321237/1745690

Objective-C(9)内存管理之ARC

标签:objective-c   xcode   ios      对象   面向对象   

原文地址:http://annmeng.blog.51cto.com/3321237/1745690

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!