【发布时间】:2015-04-01 21:27:14
【问题描述】:
我是 Objective-C 和 SO 的新手,所以请耐心等待 - 我一直在阅读一些关于何时使用 nil、NULL 或 Nil 的问题。
我的问题是:为什么我们需要这么多类型的“null”? Xcode(或类似的 IDE)不能解释这种情况需要什么“null”吗?
为了澄清,我不是在寻找 何时 使用每个 - 这已经清楚地解释了。例如,为什么Objective-C 不能简单地将NULL 定义为nothing,然后只使用上下文来确定您需要哪个nothing。我非常肯定,答案要么出于历史目的,要么出于必要目的(请举个例子),或两者兼而有之。
例如
NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];
mutableDictionary[@"someKey"] = NULL;
...在这种情况下,编译器会理解您需要插入一个“空”对象,并且只需在幕后添加它,这样字典就会直观地表现(不仅仅是导致错误)。
【问题讨论】:
-
在 Objective C 中,nil is NULL is(一种形式)0 ..
-
stackoverflow.com/questions/557582/null-vs-nil-in-objective-c 中的答案解释了何时使用 - 从合同/语义的角度 - 不同的形式和这些选择背后的基本原理。
-
这是出于歇斯底里的原因。
-
附注:可以将消息发送到 nil 而不会导致程序崩溃,但是发送到 NULL 的任何消息都会导致程序崩溃。
-
@ZaneHelton,在语义上它们并不相同,但它们的价值相同,并且可以互换使用。向
NULL发送消息不会导致崩溃,因为nil是(id)NULL。查看你的 objc.h,然后是 types.h
标签: objective-c xcode null