iOS中nil与release的区别与用法
来源:互联网 发布:淘宝情侣吊坠 编辑:程序博客网 时间:2024/06/05 04:56
做IOS开发的估计都对Objective-C的内存管理机制很头疼,一不小心程序就会出内存泄露,我也不例外,前几天被指针的置nil与release给搞惨了,今和大家详细解说一下有关Objective-C中nil与release的区别与用法。
首先说一下他们两的作用,nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系,它对内存的释放没有什么作用;而release才是真正用于内存释放的,release后系统会将该块内存标记为可用(可重新分配)。所以nil并没有释放内存,只有release才是真正释放内存。
二者使用顺序,如果没有release就直接nil,那么虽然不会出错(release一个空指针是合法的),但却等于自己制造了内存泄漏,因为nil之后release就已经不起作用了,我之前的教训就是一不小心把nil搁在了release之前,所以leak一直报内存泄露。
相反,如果先release后设置nil,就不会出现这样的问题,但是有人就会问,release而没有设置nil,会怎样?其实程序可能也不会报错,但是要知道设置nil其实是为了防止指针错乱,因为一个对象在release之后,给它所分配的内存就已经被释放了,如果释放之后不把指针置空的话,系统再误用到到这个指针时,那么程序就会崩溃(此种情况特别容易出现在延时调用函数中),如果释放之后把它的指针置为空,则即便后面的程序用到该指针,也不会崩溃。所以Objective-C释放内存时必须先release然后nil。
0 0
- iOS中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- Objective-C中nil与release的区别与用法
- IOS内存nil与release的区别
- IOS内存nil与release的区别
- ios学习路线—Objective-C(nil与release的区别与用法)
- IOS开发中nil与release
- iOS中nil和release 的区别
- iOS中nil和release的区别
- iOS中nil与NULL的区别
- ios深究release与nil
- [ios]iOS开发之self.abc = nil与[_abc release]的区别【转】
- IOS开发中nil和release的用法
- Html5添加Tabs样式单页多图轮播图插件教程
- Eclipse 搭建 Spring+SpringMVC+Mybatis(1)
- java实现坦克大战3.1版
- shiro和ehcache结合时遇到的问题
- 什么是DirectX,总是看到显卡支持DirecTX多少
- iOS中nil与release的区别与用法
- c++例子分析-内存内容覆盖
- javascript清空所有input的值
- DocumentHelper用法
- shell三剑客之一AWK的使用
- # Unity3d Mecanim动画如何应用3dmax中的动画位移
- Eclipse 搭建 Spring+SpringMVC+Mybatis(2)
- Robotium测试报告的生成以及pull到电脑上的方法
- 新手学习Linux的常用命令