NULL、nil、Nil 和NSNULL

转:nil、Nil、NULL和NSNull区别
NULL、nil、Nil这三者对于Objective-C中值是一样的,都是(void *)0,那么为什么要区分呢?又与NSNull之间有什么区别:

NULL是宏,是对于C语言指针而使用的,表示空指针
nil是宏,是对于Objective-C中的对象而使用的,表示对象为空
Nil是宏,是对于Objective-C中的类而使用的,表示类指向空
NSNull是类类型,是用于表示空的占位对象,与JS或者服务端的null类似的含意

野指针

什么是野指针呢?野指针就是随机指向一块内存的指针。
如果一个指针被定义成了野指针,那对这个指针的使用的危害是多么的大,它可能改变程序中任何地方的值。
那到底造成野指针的原因有哪些?
a.指针指向一块已经释放的内存。

b.指针指向一块没有访问权限的内存。
下面我们来讲讲怎么来避免野指针:

a.给指针赋值的时候,先检查指针是否分配了合理的内存空间。

b.释放内存的指针要给指针赋值为NULL

你可能感兴趣的:(NULL、nil、Nil 和NSNULL)