Objective c 目标C:分配给nil的var的NSLog打印(空)?
我很好奇为什么一个公开赋值为nil的变量会用NSLog打印为(null):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)
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)