nil 和 release区别

nil是将一个对象指针置为空,只是切断指针和内存中对象联系,还是占用内存的,并没有真正释放内存,只是将对象指针置为空。
release是真正通知内存释放对象,真正释放内存。

如果没有relase而是直接置为nil,那么程序编译运行时候可能不会出错,但是这存在内存泄露,因为置为nil后
release不起作用了。
如果只是release而没有置为nil,应用程序也不能不会报错,但是会不稳定,程序的健壮性不够好,因为没有设置self.obj = nil,在release这个obj后,如果在之后又用到了这个对象,因为在系统内存中已经不存在了,程序就会崩溃,所以在release一个对象后应该也要将该对象置为nil,在之后如果用到了这个obj也不会造成崩溃。

nil是给对象赋值,NSNULL是给指针赋值,例如判断一个对象 

if(obj){
},NSNULL用于对集合操作。
posted @ 2015-09-22 14:52  原生态芒果  阅读(201)  评论(0编辑  收藏  举报