iOS nil、Nil、NULL和NSNull区别
- nil和C语言的NULL相同,在objc/objc.h中定义。nil表示Objective-C对象的值为空。在C语言中,指针的控制用NULL表示。在Objective-C中,nil对象调用任何方法表示什么也不执行,也不会崩溃。
- Nil:那么对于我们Objective-C开发来说,Nil也就代表((void *)0)。但是它是用于代表空类的。比如:Class myClass = Nil;
3.NULL:在C语言中,NULL是无类型的,只是一个宏,它代表空。这就是在C/C++中的空指针。对于我们Objective-C开发来说,NULL就表示((void *)0)。
- NSNull:NSNull是继承于NSObject的类型。它是很特殊的类,它表示是空,什么也不存储,但是它却是对象,只是一个占位对象。使用场景就不一样了,比如说服务器端口中让我们在值为空时,传空。NSDictionary *parameters = @{@"arg1":@"value1",@"arg2":arg2.isEmpty ? [NSNull null]:arg2};
- 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
网友评论