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

don*_*ile 4 null pointers objective-c

例:

验证方法包含此检查以查看是否应创建NSError对象:

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

现在我传递一个NSError对象,如下所示:

NSError *error = nil;
BOOL ok = [self validateCompanyName:@"Apple" error:&error];
Run Code Online (Sandbox Code Playgroud)

我不确定这是否与检查不匹配.我认为它不是NULL,因为我认为NULL不是零.也许有人可以解决这个问题?

Jac*_*kin 6

nil (所有小写)是指向Objective-C对象的空指针.

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

NULL (所有大写)是指向其他任何内容的空指针.

然而他们都编译到了0,所以(nil == Nil == NULL == 0)(感谢戴夫).

  • 或者更简单地说:`nil = Nil = NULL = 0` (2认同)