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类似的含义
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容