什么时候应该在Objective-C中使用nil和NULL?
这是示例代码:
NSDictionary *myDictionary = [NSDictionary dictionary];
NSNumber *myNumber = [myDictionary valueForKey: @"MyNumber"];
NSLog(@"myNumber = %@", myNumber); // output myNumber = (null)
if (myNumber == nil)
NSLog(@"test 1 myNumber == nil");
if (myNumber == NULL)
NSLog(@"test 2 myNumber == NULL");
if ([myNumber isEqual:[NSNull null]])
NSLog(@"test 3 myNumber == [NSNull null]");
我什么时候应该使用nil,NULL和[NSNull null]?
没有找到相关结果
已邀请:
16 个回复
冲汉
。主要区别在于您可以向
发送消息,因此您可以在某些无法工作的地方使用它。 一般来说,只需使用
。
耐扫鹤胶鞭
是
,
是
,而
是一个类指针。
良阑纠苫
如果我们正在处理一个对象,那么应该使用nil。
现在,NULL用于Objective-C中的非对象指针(如C指针)。像nil一样,NULL没有值也没有地址。
所以,如果有一种情况,当我需要检查我的struct(结构类型变量)是否为空时,我将使用:
让我们有另一个例子,
在键值观察中,上下文应该是C指针或对象引用。在这里我们不能使用nil;我们必须使用NULL。 最后,NSNull类定义了一个单独的对象,用于表示集合对象中的空值(NSArray,NSDictionary)。 [NSNull null]将返回NSNull的单例实例。基本上[NSNull null]是一个合适的对象。 无法将nil对象插入集合类型对象。我们举个例子:
在第二行,我们不会得到任何错误,因为将NSNull对象插入到集合类型对象中是完全公平的。在第三行,我们将得到“对象不能为零”的错误。因为nil不是一个对象。
信藉乒
,具体而言)。
是一个在不允许nil的情况下意味着零的对象。例如,NSArray中不能包含nil值。所以如果你需要代表一个“零”,你可以使用
。
补蹲农界维
_types.h
STDDEF.H
MacTypes.h
它看起来的方式,没有区别,只有一个概念。
勺的驴吓识
返回
。
稀瓣囊
爆山
有一点不同,但只有你自己和其他阅读代码的人,编译器并不关心。 还有一件事是nil是对象值,而NULL是通用指针值。
捻盒愧杯
和
和
在Objective-C和in中是相同的 C ++之前的Objective-C ++ 11。
和
和
是 Objective-C ++与C ++ 11完全相同。 在风格上,许多人更喜欢使用
作为Objective-C对象,而
或
作为其他指针类型。我自己现在到处都用
。
是一个单例对象,用于在禁止
作为值的情况下表示空值(通常在集合对象中,如
或
)。数字和值编程主题:使用NSNull
苦诫
但是,当从C框架(如AddressBook框架和CoreFoundation)检查数据模型的有效性时,我使用NULL。例如:
这样,如果我处理的是基于Obj-C或C的代码,我的代码中会有细微的线索。
琶竞捆栓
抹持奠糙驰
唤副埂侧壬
穗揣
厘恼轨
悲帽慑彤电