美文网首页
iOS nil、Nil、NULL和NSNull区别

iOS nil、Nil、NULL和NSNull区别

作者: 雪丹妮_66865 | 来源:发表于2019-06-01 08:56 被阅读0次
    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类似的含义

    相关文章

      网友评论

          本文标题:iOS nil、Nil、NULL和NSNull区别

          本文链接:https://www.haomeiwen.com/subject/jskotctx.html