指向nil的指针是否与NULL匹配?

时间:2010-06-13 06:20:53

标签: objective-c pointers null

示例:

验证方法包含此检查以查看是否应创建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,因为我认为NULL不是零。也许有人可以解决这个问题?

1 个答案:

答案 0 :(得分:6)

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

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

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

然而他们都编译到0,所以(nil == Nil == NULL == 0)(感谢Dave)。