【问题标题】:Where is my NSLog output?我的 NSLog 输出在哪里?
【发布时间】:2011-03-06 22:24:38
【问题描述】:

我刚开始学习 iOS 开发。我在我的代码中使用了一些 NSLog 语句,但它们似乎没有在任何地方输出。我的应用程序正在使用调试配置,并且我在 Xcode 中的 iPhone 模拟器中运行我的应用程序。我检查了 Xcode 控制台(在运行菜单下)和我 Mac 上的 Console.app,但什么都没有。

可能是什么问题?

【问题讨论】:

  • 你确定NSlog的那一行被执行了吗?尝试在 main.m 中的自动释放池分配后立即插入 NSLog
  • 呵呵说什么。另外,请尝试在重新启动您的 Mac 后进行清理。
  • @hoha 你是对的。由于某种原因,我的视图控制器中的日志语句没有被执行。如果您将评论添加为答案,那么我会接受。谢谢。

标签: iphone objective-c xcode nslog


【解决方案1】:

确保您已激活您的Console。为此,您可以:

  • 转到 查看 > 调试区域 > 激活控制台(从您的菜单栏)
  • 或按键盘上的 C

【讨论】:

    【解决方案2】:

    NSLog() 模拟器上的输出确实显示在 Console Mac OS X 应用程序中。

    转到All Messages,然后根据您的应用名称进行过滤以去除绒毛,然后再次运行。如果 NSLog 代码在程序执行期间实际被命中,您将在输出中看到它。

    【讨论】:

    • 我发现这在检查日志以查找在 XCode 控制台中似乎不可用的初始应用程序触发后的内容时特别有用。
    【解决方案3】:

    像这样使用NSLog()

    NSLog(@"The code runs through here!");
    

    或者像这样 - 使用占位符:

    float aFloat = 5.34245;
    NSLog(@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat);
    

    NSLog() 中,您可以像+ (id)stringWithFormat:(NSString *)format, ... 一样使用它

    float aFloat = 5.34245;
    NSString *aString = [NSString stringWithFormat:@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat];
    

    您也可以添加其他占位符:

    float aFloat = 5.34245;
    int aInteger = 3;
    NSString *aString = @"A string";
    NSLog(@"This is my float: %f \n\nAnd here is my integer: %i \n\nAnd finally my string: %@", aFloat, aInteger, aString);
    

    【讨论】:

    • 一个很好的答案......但不是我问的问题。
    • 这样的答案不应该被否决。考虑一下人们会抽出时间来回答并给出很好的反馈。这可能不是具体的答案,也许不应该投赞成票,但也不应该投反对票。
    【解决方案4】:

    已从评论中移出

    您确定执行NSLog 的那一行吗?尝试在 main.m 中的自动释放池分配之后立即插入 NSLog

    【讨论】:

    • 我的控制器代码没有运行,因为我在 xib 文件中分配了不正确的控制器。
    【解决方案5】:

    真的很奇怪。只是为了实验:尝试将 NSLog 输出重定向到这样的文件:

    freopen ("/out","w", stderr);
    NSLog(@"1234567890");
    

    如果有输出,那么你的stderr 有问题。

    【讨论】:

      猜你喜欢
      • 2019-12-08
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 2022-07-06
      • 2018-05-15
      相关资源
      最近更新 更多