nil和release区别
nil是将一个对象指针置为空,只是切断指针和内存中对象联系,还是占用内存的,并没有真正释放内存,只是将对象指针置为空。
release是真正通知内存释放对象,真正释放内存。
如果没有relase而是直接置为nil,那么程序编译运行时候可能不会出错,但是这存在内存泄露,因为置为nil后release不起作用了。
如果只是release而没有置为nil,应用程序也不能不会报错,但是会不稳定,程序的健壮性不够好,因为没有设置self.obj = nil,在release这个obj后,如果在之后又用到了这个对象,因为在系统内存中已经不存在了,程序就会崩溃,所以在release一个对象后应该也要将该对象置为nil,在之后如果用到了这个obj也不会造成崩溃。
nil是给对象赋值,NSNULL是给指针赋值
例如判断一个对象 if(obj){},NSNULL用于对集合操作。