Objective-C:对于分配给nil的var,NSLog打印(null)?

时间:2010-01-06 07:06:23

标签: objective-c cocoa xcode null

我很好奇为什么一个变量明显分配给nil,用NSLog打印为(null):

NSString *myVar = nil;
NSLog(@"%@", myVar);

# RESULT: ' (null) '

考虑到在Objective-C中找出的所有不同类型的“虚无”,我当然很混乱,并让我尝试测试各种IF NULL语法。

4 个答案:

答案 0 :(得分:9)

总结出不同种类的“虚无”:

nil  //Null pointer to an Objective-C object
Nil  //Null pointer to an Objective-C class
NULL  //Null pointer

以上所有内容都定义为((void *)0)

答案 1 :(得分:4)

(null)是用于打印目的的'nil'的字符串表示...与IF NULL检查无关。 myVar仍为nil

答案 2 :(得分:2)

这只是方法NSLog IMHO的实现。

答案 3 :(得分:2)

这是%@格式的作用,它将nil转换为NSNullmyVar本身仍然是nil。您仍然可以使用if (myVar)进行测试。