【问题标题】:Objective-C: NSLog prints (null) for a var assigned to nil?Objective-C:NSLog打印(null)分配给nil的var?
【发布时间】:2010-01-06 07:06:23
【问题描述】:
我很好奇为什么一个变量被公开分配给 nil,用 NSLog 打印为 (null):
NSString *myVar = nil;
NSLog(@"%@", myVar);
# RESULT: ' (null) '
考虑到在 Objective-C 中要弄清楚的所有不同类型的“虚无”,这当然是相当令人困惑的,并且让我尝试测试各种 IF NULL 语法。
【问题讨论】:
标签:
objective-c
cocoa
xcode
null
【解决方案1】:
总结了不同种类的“虚无”:
nil //Null pointer to an Objective-C object
Nil //Null pointer to an Objective-C class
NULL //Null pointer
以上所有内容都定义为((void *)0)。
【解决方案2】:
(null) 是用于打印目的的“nil”的字符串表示形式......与IF NULL 检查无关。 myVar 仍然是nil
【解决方案3】:
这就是%@ 格式的作用,它将nil 转换为NSNull。 myVar 本身仍然是 nil。您仍然可以使用if (myVar) 进行测试。