A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© thnnht 中级黑马   /  2015-12-3 23:49  /  1032 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    各位小伙伴有木有在使用某个应用的时候出现闪退的现象呢?这一现象跟我们程序的内存管理息息相关.下面是本人总结的一些关于内存管理的一些笔记,希望和各位小伙伴共同探讨,共同进步.一,内存管理的黄金法则:
谁创建,谁release.        谁用alloc,new,copy,mutablecopy创建的对象,谁就要调用release方法,让计数器-1.
谁retain,谁release.     谁retain,之后就要调用release方法.
二,相关概念
1,僵尸对象,被回收的对象(不可用对象)
2.野指针:指向僵尸对象的指针.
3,空指针:不知想任何对象的指针,里面存的是nil.
注意给空指针发送空消息,不会有任何响应,也不会报错.
三,如何避免僵尸对象
对象release之后,视情况,加入 p = nil;
四:内存泄露的几种情况
  1, retain 和 release 的个数不匹配,导致内存泄露
  2, 对象的不当的赋值
  3, 在方法中进行了retain操作可能导致内存泄露
五,多个对象内存管理
1,set方法的内存管理
- (void) setCar:(Car*)car {
    if (_car != car) {    // 判断传进来的是否是新值
        [_car release];  //将旧值释放
        _car = [car retain]; // 新值retain,并将返回的对象赋值给成员变量
    }
}
2.dealloc方法的实现
- (void) dealloc {
      [_car release];  // 新将对象的所属对象释放
      [super dealloc];  // 在调用[super release];,切只能放在最后.
}
未完待续!      



评分

参与人数 3黑马币 +48 收起 理由
黑马_绯闻 + 20 这B装的,我给10分
肖某 + 20 写的非常认真,通俗易懂,这个B装的beautiful.
Andy丶JF + 8 赞一个!

查看全部评分

7 个回复

倒序浏览
没有copy啊,求技术分,黑马币!
回复 使用道具 举报 1 0
不错不错~ 顶起来~
回复 使用道具 举报
kingwang 来自手机 中级黑马 2015-12-4 00:10:44
板凳
ok
。哈哈
回复 使用道具 举报
总结的挺好的
回复 使用道具 举报
不错不错~ 顶起来~
回复 使用道具 举报
厉害  !   加油!  学习了!
回复 使用道具 举报
收藏,再过几天我也要学到这了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马