一个指向空指针的指针是否会匹配NULL?

4

例子:

一个验证方法包含这个检查,以便判断是否需要创建NSError对象:

- (BOOL)validateCompanyName:(NSString *)newName error:(NSError **)outError {
    if (outError != NULL) {
        // do it...

现在我传递一个NSError对象,像这样:
NSError *error = nil;
BOOL ok = [self validateCompanyName:@"Apple" error:&error];

我不确定这是否符合非空检查。我认为它不是NULL,因为我相信NULL不是nil。也许有人可以澄清一下?


3
如果您按住Command键并双击一个nil,会发生什么? ;) - Dave DeLong
1
然后我得到了一些非常奇怪的东西,像是 #define nil NULL ;) 哈哈...本来可以想到这个的。是的,同样的事情。感谢提示。 - dontWatchMyProfile
1个回答

6

nil(全部小写)是指向Objective-C对象的空指针。

Nil(首字母大写)是指向Objective-C类的空指针。

NULL(全部大写)是指向其他任何类型的空指针。

它们都编译成0,所以(nil == Nil == NULL == 0)(感谢Dave)。


2
更简单地说:nil = Nil = NULL = 0 - Dave DeLong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接