11

当我们提交带有NSLog声明的申请时,

声明会产生什么影响?那些还会执行吗?如果它执行,这些日志会作为应用程序日志/系统日志存储在某处吗?我们能看到那些吗?它是否连接到 iTunesConnect 中的 Apple 崩溃报告?

请澄清我的疑问。

4

5 回答 5

8

简短的回答:-

  1. 是的,它在生产应用程序中执行
  2. NSLog 只是登录到控制台,我不认为它存储在某个地方。
  3. 我们只能在控制台中看到。
  4. 当应用程序崩溃时,NSLog 不会在崩溃提交报告中打印。
于 2013-11-11T12:11:18.230 回答
6

NSLog调用可以留在生产代码中。它将记录在系统日志中。乱扔系统日志的应用程序很烦人,而且是一种不专业的方式。因此,请尝试在日志记录中使用宏,以便您可以在生产中删除日志代码执行

#define DEBUG_MODE

#ifdef DEBUG_MODE
    #define DebugLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
    #define DebugLog( s, ... ) 
#endif
于 2013-11-11T11:12:26.733 回答
5

NSLog 语句将保留在生产环境中。您可以通过Shift + CMD + 2或找到它们:

Xcode > Windows > Organizer

如果您已连接设备。检查控制台您可以看到它们,以及使用该应用程序的其他人。

在此处输入图像描述

于 2013-11-11T12:13:52.227 回答
2

如果您不打算删除 NSLog 语句,它们将在生产环境中存储和执行。这不是一个好习惯。如果影响应用程序性能。

关于在 MobileTuts+ 上显示日志有一个很好的教程

Mobile Tuts Plus NSlog 教程

无论如何,如果要存储它,则需要将其存储在文档目录中的某个位置,但是您也将无法从设备应用程序目录中获取文件。为此,您可以将其上传到某个地方webserver或类似的地方。然后你就可以访问它们了。

如果还有疑问,请告诉我。

于 2013-11-11T11:19:24.693 回答
2

是的,如果您将其留在发布版本中,则该语句将执行。

因此,正如@Lithu TV 所说,在发布版本中评论 NSLog 或使用 DEBUG MODE 是一种更好的做法

通过这样做,性能会变得更好。因为 NSLog 很慢。NSLog 将做两件事 1) 将日志消息写入 Apple System Logging(ASL) 2) 如果应用程序在 xcode 中运行,它也会写入 stderr。

主要问题在于第一个问题。为了实现线程安全,每次调用 NSLog 时,它都会打开与 ASL 设施的连接,发送消息,然后关闭连接。连接操作非常昂贵。另一个原因是 NSLog 花费一些时间来获取要记录的时间戳。

更新:我也不认为有任何直接的方法可以从系统中检查日志,但是有一些软件可以帮助查看控制台日志。以下可以帮助您显示控制台日志:http: //support.apple.com/kb/DL1465

我自己从未尝试过。所以不能给你保证。

于 2013-11-11T11:17:39.733 回答