内存管理

内存管理环境:MRC(手动)

内存管理的范围:NSObjective对象,(原因:OC对象是存储在堆内存中,非OC对象存储在栈中)

内存管理:retain - 引用计数加1,    release - 引用计数减1   retaincount - 查看当前引用计数,即指针个数

dealloc方法:在对象引用计数归零时被调用,释放内存,dealloc方法有没有被调用,就可以判断内存有没有被释放

                    注:1.dealloc就是对象的遗言,一旦重新了dealloc方法,就必须调用[super dealloc],并且放在最后面被调用

                           2.不能直接调用dealloc方法,一旦对象被回收,其占用的内存就不能再使用,坚持使用会出现程序崩溃(即野指针)


概念:1 僵尸对象:已经被销毁的(不能再使用的)对象

           2 野指针:指向僵尸对象的指针,给野指针发消息会报EXC_BAD_ACCESS错误

          3 空指针:没有指向内存空间的指针,里面存的对象是nil.也是0,给空指针发消息是没有任何反应

   

避免野指针出现的方法:在对象被销毁之后,将指向对象的指针变为空指针


set方法的内存管理

- (void)setCar:(Car*)car

{

if(car != _car)

{

// 对旧车做一次release

 [_car  release ]; 

// 对新车做一次retain

[_car retain ];

  }

}

        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值