2015-04-01 61 views
0

我是新来的Objective-C &所以,请耐心等待 - 我一直在阅读关于何时使用nil,NULL或Nil的一些问题。为什么我们在Objective-C中需要多种“null”?

我的问题是:为什么我们需要这么多类型的“null”? Xcode(或类似的IDE)不能解释什么情况下需要“null”?

要澄清,我不寻找使用每个 - 这是清楚解释。例如,为什么Objective-C不能简单地将NULL定义为什么也没有,然后只是使用上下文来确定哪个什么都不需要。我相当积极,答案要么是历史性的,要么是必要的目的(请举例),或者两者兼而有之。

例如

NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary]; 
mutableDictionary[@"someKey"] = NULL; 

......在这种情况下,编译器会知道你需要插入一个“空”的对象,&只需添加这一幕后所以词典将表现直观地(&不只是导致错误)。

+0

In Objective C,nil * is * NULL * is *(form of)0 .. – user2864740 2015-04-01 21:29:50

+0

答案在http://stackoverflow.com/questions/557582/null-vs-nil-in-objective-c从合同/语义的角度解释何时使用 - 这些选择背后的不同形式和基本原理。 – user2864740 2015-04-01 21:31:32

+0

别忘了NSNull – 2015-04-01 21:33:59

回答

1

存在NSHipster Article覆盖不同类型的空的

基本上,NULL为C-指针空值,
零为目标C的对象的空值,
无是空值Objective-C类和
[NSNull null]是一个Objective-C对象来表示空值。