ios学习路线—Objective-C(nil与release的区别与用法)

首先说一下他们两的作用
1.nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系,它对内存的释放没有什么作用。
2.release才是真正用于内存释放的,release后系统会将该内存标记为可以(可重新分配)。

二者使用顺序
如果没有release就直接nil,那么虽然不会出错(release一个空指针是合法的),但却等于自己制造了内存泄露,因为nil之后release就已经不起作用了。

相反,如果先release后设置nil,就不会出现这样的问题,但是有人就会问,relese而没有设置nil,会怎样?其实程序可能不会报错,但是要知道设置nil其实是为了防止指针错乱,因为一个对象在release之后,给它所分配内存就已经被释放了,如果释放之后不把指针置空的话,系统再误用到这个指针时,那么程序就会崩溃(此种情况特别容易出现在延时调用函数中),如果释放之后把它的指针置为空,则即便后面的程序用到该指针,也不会崩溃。所以Objective-C释放内存时必须先release然后在nil。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值