1、NULL

指针变量的值,表示该指针不指向内存中的任何1个地址空间,与0等价。

2、nil

指针变量的值,表示该指针不指向内存中的任何1个地址空间,与0等价。

3、使用规范

C语言指针类型,用NULL
OC类指针类型,用nil

  1. //
  2. // main.m
  3. // NullAndNilDemo
  4. //
  5. // Created by ZhaiKun on 2017/10/9.
  6. // Copyright © 2017年 ZhaiKun. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. @interface Person : NSObject
  10. @end
  11. int main(int argc, const char * argv[]) {
  12. @autoreleasepool {
  13. int *a = NULL;//表示a不指向内存中的任何一片空间
  14. Person *person = nil;//表示person不指向内存中的任何一个对象
  15. }
  16. return 0;
  17. }

通过被赋值为nil的类指针去调用对象中的属性时,运行时出错,调用方法不会出错,但是方法不会执行,没有任何效果,这是Objective-C语言的机制,不要问我为什么、、、