iOS nil、Nil、NULL和NSNull区别

  1. nil和C语言的NULL相同,在objc/objc.h中定义。nil表示Objective-C对象的值为空。在C语言中,指针的控制用NULL表示。在Objective-C中,nil对象调用任何方法表示什么也不执行,也不会崩溃。
  2. Nil:那么对于我们Objective-C开发来说,Nil也就代表((void *)0)。但是它是用于代表空类的。比如:Class myClass = Nil;
    3.NULL:在C语言中,NULL是无类型的,只是一个宏,它代表空。这就是在C/C++中的空指针。对于我们Objective-C开发来说,NULL就表示((void *)0)。
  3. NSNull:NSNull是继承于NSObject的类型。它是很特殊的类,它表示是空,什么也不存储,但是它却是对象,只是一个占位对象。使用场景就不一样了,比如说服务器端口中让我们在值为空时,传空。NSDictionary *parameters = @{@"arg1":@"value1",@"arg2":arg2.isEmpty ? [NSNull null]:arg2};
  4. NULL、nil、Nil这三者对于Objective-C中值是一样的,都是((void *)0),那么为什么要区分呢?又与NSNull之间有什么区别:
    NULL是宏,是对于C语言指针而使用的,表示空指针
    nil是宏,是对于Objective-C中的对象而使用的,表示对象为空
    Nil是宏,是对于Objective-C中的类而使用的,表示类指向空
    NSNull是类类型,是用于表示空的占位对象,与JS或者服务器的null类似的含义

猜你喜欢

转载自blog.csdn.net/weixin_33872566/article/details/90852756