Objective-C:NSLog 为分配给 nil 的 var 打印 (null)?
我很好奇为什么一个变量公开分配给 nil,用 NSLog 打印为 (null):
NSString *myVar = nil;
NSLog(@"%@", myVar);
# RESULT: ' (null) '
这当然很令人困惑,因为在 Objective-C 中要弄清楚所有不同类型的“虚无”,并且让我尝试测试各种IF NULL 语法。
I'm curious why a variable overtly assigned to nil, prints as (null) with NSLog:
NSString *myVar = nil;
NSLog(@"%@", myVar);
# RESULT: ' (null) '
This is of course quite confusing given all the different kinds of "nothingness" to figure out in Objective-C, and had me trying to test various IF NULL syntaxes.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不同种类的“虚无”总结如下:
以上所有定义为
((void *)0)
。The different kinds of "nothingness" summed up:
All of the above are defined as
((void *)0)
.(null) 是用于打印目的的“nil”的字符串表示形式...与
IF NULL
检查无关。 myVar 仍然nil
(null) is the string representation of 'nil' for printing purposes... nothing related to
IF NULL
checks. myVar is stillnil
这就是
%@
格式的作用,它将nil
转换为NSNull
。myVar
本身仍然是nil
。您仍然可以使用if (myVar)
进行测试。This is what
%@
format does, it castsnil
toNSNull
.myVar
itself is stillnil
. You can still useif (myVar)
for testing.这只是方法
NSLog IMHO
的实现。It's just the implementation of the method
NSLog IMHO
.