Objective c 目标C:分配给nil的var的NSLog打印(空)?

Objective c 目标C:分配给nil的var的NSLog打印(空)?,objective-c,cocoa,xcode,null,Objective C,Cocoa,Xcode,Null,我很好奇为什么一个公开赋值为nil的变量会用NSLog打印为(null): NSString *myVar = nil; NSLog(@"%@", myVar); # RESULT: ' (null) ' 考虑到Objective-C中各种各样的“虚无”,这当然是相当令人困惑的,我试着测试各种IF-NULL语法。它只是方法的实现NSLog-IMHO它只是方法的实现NSLog-IMHO这就是%@格式所做的,它将nil转换为NSNullmyVar本身仍然是nil。您仍然可以使用if(myVar)

我很好奇为什么一个公开赋值为nil的变量会用NSLog打印为(null):

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

# RESULT: ' (null) '

考虑到Objective-C中各种各样的“虚无”,这当然是相当令人困惑的,我试着测试各种IF-NULL语法。

它只是方法的实现
NSLog-IMHO

它只是方法的实现
NSLog-IMHO
这就是
%@
格式所做的,它将
nil
转换为
NSNull
myVar
本身仍然是
nil
。您仍然可以使用
if(myVar)
进行测试。

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

(null)是用于打印的“nil”的字符串表示形式。。。如果检查为空,则与
无关。myVar仍然是
nil

(null)是用于打印的“nil”的字符串表示形式。。。如果检查为空,则与
无关。myVar仍然是
nil

不同类型的“虚无”总结如下:

nil  //Null pointer to an Objective-C object
Nil  //Null pointer to an Objective-C class
NULL  //Null pointer
以上所有内容均定义为
((void*)0)

不同类型的“虚无”总结如下:

nil  //Null pointer to an Objective-C object
Nil  //Null pointer to an Objective-C class
NULL  //Null pointer
以上所有内容均定义为
((void*)0)