一、空指针是指针对象没有初始化,调用空指针对象不会报错,也不会有任何作用。

  1. nil (id)0 literal null value for Objective-C objects
    定义对象为空,是一个对象

    1
    NSObject* obj = nil;
  2. Nil (Class)0 literal null value for Objective-C classes
    定义类为空

    1
    Class someClass = Nil;
  3. NULL (void *)0 literal null value for C pointers
    定义基本数据类型的指针为空,是一个值

    1
    int *a = NULL;
  4. NSNull [NSNull null] singleton object used to represent null
    给集合中的对象赋空值,集合中的对象无法直接赋值为nil,因而需要通过[NSNull null]赋值,NSNull定义了一个单例对象用于表示集合对象的空值

    1
    2
    NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];
    mutableDictionary[@"someKey"] = [NSNull null];

二、野指针是指针指向已经释放的对象,指针所指向的对象已经释放,内存变成垃圾内存,指针变成野指针,指向垃圾内存,因而不能再使用,调用会报错。
合理避免野指针的方式是释放对象后将对象赋值为nil。

文章目录