空指针&野指针
一、空指针是指针对象没有初始化,调用空指针对象不会报错,也不会有任何作用。
nil (id)0 literal null value for Objective-C objects
定义对象为空,是一个对象1NSObject* obj = nil;Nil (Class)0 literal null value for Objective-C classes
定义类为空1Class someClass = Nil;NULL (void *)0 literal null value for C pointers
定义基本数据类型的指针为空,是一个值1int *a = NULL;NSNull [NSNull null] singleton object used to represent null
给集合中的对象赋空值,集合中的对象无法直接赋值为nil,因而需要通过[NSNull null]赋值,NSNull定义了一个单例对象用于表示集合对象的空值12NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];mutableDictionary[@"someKey"] = [NSNull null];
二、野指针是指针指向已经释放的对象,指针所指向的对象已经释放,内存变成垃圾内存,指针变成野指针,指向垃圾内存,因而不能再使用,调用会报错。
合理避免野指针的方式是释放对象后将对象赋值为nil。