【问题标题】: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 转换为NSNullmyVar 本身仍然是 nil。您仍然可以使用if (myVar) 进行测试。

        【讨论】:

          【解决方案4】:

          只是方法NSLog IMHO的实现。

          【讨论】:

            猜你喜欢
            • 2016-10-08
            • 2014-10-13
            • 1970-01-01
            • 2020-08-05
            • 2010-10-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-09
            相关资源
            最近更新 更多