当我们提交带有NSLog
声明的申请时,
声明会产生什么影响?那些还会执行吗?如果它执行,这些日志会作为应用程序日志/系统日志存储在某处吗?我们能看到那些吗?它是否连接到 iTunesConnect 中的 Apple 崩溃报告?
请澄清我的疑问。
当我们提交带有NSLog
声明的申请时,
声明会产生什么影响?那些还会执行吗?如果它执行,这些日志会作为应用程序日志/系统日志存储在某处吗?我们能看到那些吗?它是否连接到 iTunesConnect 中的 Apple 崩溃报告?
请澄清我的疑问。
简短的回答:-
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
NSLog 语句将保留在生产环境中。您可以通过Shift + CMD + 2
或找到它们:
Xcode > Windows > Organizer
如果您已连接设备。检查控制台您可以看到它们,以及使用该应用程序的其他人。
如果您不打算删除 NSLog 语句,它们将在生产环境中存储和执行。这不是一个好习惯。如果影响应用程序性能。
关于在 MobileTuts+ 上显示日志有一个很好的教程
无论如何,如果要存储它,则需要将其存储在文档目录中的某个位置,但是您也将无法从设备应用程序目录中获取文件。为此,您可以将其上传到某个地方webserver
或类似的地方。然后你就可以访问它们了。
如果还有疑问,请告诉我。
是的,如果您将其留在发布版本中,则该语句将执行。
因此,正如@Lithu TV 所说,在发布版本中评论 NSLog 或使用 DEBUG MODE 是一种更好的做法
通过这样做,性能会变得更好。因为 NSLog 很慢。NSLog 将做两件事 1) 将日志消息写入 Apple System Logging(ASL) 2) 如果应用程序在 xcode 中运行,它也会写入 stderr。
主要问题在于第一个问题。为了实现线程安全,每次调用 NSLog 时,它都会打开与 ASL 设施的连接,发送消息,然后关闭连接。连接操作非常昂贵。另一个原因是 NSLog 花费一些时间来获取要记录的时间戳。
更新:我也不认为有任何直接的方法可以从系统中检查日志,但是有一些软件可以帮助查看控制台日志。以下可以帮助您显示控制台日志:http: //support.apple.com/kb/DL1465
我自己从未尝试过。所以不能给你保证。