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

关于 MRC 开发中的一些细节

时间:2015-07-15 20:44:34      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

 1. 谁申请,谁释放,适用于面向对象开发的一个原则,“配对原则”

 2. 如果在实例化对象的时候,使用了 alloc,retain,copy,new(alloc&init),就需要有对应的 release 方法

    - allocWithZone 不需要配对的 release

 3. 工具-静态分析工具(analysis)

    可以从代码结构上分析是否存在内存缺陷,本身不会运行代码,能够发现大部分的问题

 4. 如果一个方法需要返回对象,这个要返回的对象就需要添加 autorelease,对象会在自动释放池销毁之前被销毁

    从而达到延迟释放的效果!

 5. 如果是自定义 Copy 对象,需要使用 allocWithZone 方法为对象分配空间!

 6. 如果自定义对象中有 copy,retain(相当于 arc 的strong)

    需要在 dealloc 方法中释放

 7. 知识点补充:

    什么时候用 _name?什么时候用 self.name?

 

    -self.name 是属性,对应有 getter&setter方法

        *** 使用 self.name 能够借助默认的 setter 方法保证引用计数的平衡

    -_name 是成员变量,是内存中的实例

        使用细节

        ** 在第一次使用的时候,苹果官方建议使用 _name,赋初始值,例如:loadView,viewDidLoad方法中

        提示:如果使用懒加载除外

        ** 在dealloc方法中使用 _name

 

 // MRC 的 setter 方法中

 - (void)setName:(NSString *)name {

    // 1. 判断赋值的 name 和原来 _name 成员变量中保存的内容是否一致

    if (name != _name) {

        // 释放旧值

         [_name release];

         

         _name = name;

         // 对新的值进行强引用

         [_name retain];

    }

 }

 

 8.如果是使用类方法,或者其他返回自动释放的对象,那么需要自己retain,否则一次运行循环后,就会被释放!

 

关于 MRC 开发中的一些细节

标签:

原文地址:http://www.cnblogs.com/zhaoyanpeng/p/4649266.html

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