【发布时间】:2011-07-12 11:54:41
【问题描述】:
是否应该在 iTunes 的最终应用中删除所有 NSLog() 调用?
在我的 iOS 应用程序中,我有很多 NSLog() 用于调试。 我应该在上传到 iTunes 之前有条件地把它们编码出来吗?
适用于:iPhone、iPod、iPad 的应用
谢谢。
【问题讨论】:
是否应该在 iTunes 的最终应用中删除所有 NSLog() 调用?
在我的 iOS 应用程序中,我有很多 NSLog() 用于调试。 我应该在上传到 iTunes 之前有条件地把它们编码出来吗?
适用于:iPhone、iPod、iPad 的应用
谢谢。
【问题讨论】:
我将在标题中回答 OP 关于日志在设备上的存储位置的问题。 NSLog() 使用 ASL(Apple 系统记录器)。以编程方式,您只能读取最后 256 个条目(例如 Xcode 在 Organizer 中显示的内容)。
但是,如果您想访问完整的文件,它们存储在:
/private/var/log/DiagnosticMessages
当您查看该目录时(注意:设备必须越狱),您会发现一长串 *.asl 文件。
我找到了解析这些文件的工具,但我还没有尝试过,所以YMMV:
【讨论】:
您不必全部删除;事实上,如果您的应用程序在用户的手机上崩溃并且您希望他们向您发送崩溃日志,它们会很有用。当用户同步他/她的手机时,崩溃日志位于文件夹中
~/Library/Logs/CrashReporter/MobileDevice/<DEVICE_NAME>
如果您有NSLog()s,您可能会像调试时一样获得有用的信息。正如其他人指出的那样,不要过度使用它,但它们最终可能会有用。
【讨论】:
是的,我们应该在上传到 iTunes 之前删除所有 NSLog() 调用。这样做主要是为了获得更好的性能。
即使您不删除它们,也没有问题。它将被批准。但是如果你有很多 NSLog() s,那将会定义。影响性能。
【讨论】:
尝试将其用于您的 NSLog:
#define DEBUG
#ifdef DEBUG
NSLog(@"Your tests outputs");
#endif
【讨论】:
不是全部。您应该保留错误日志。如果有任何错误或崩溃,这将很容易找到。 也可以使用 Organizer 查看 NSLog 消息。
【讨论】:
received error code 50063 in function f 之类的内容非常有用。尤其是当错误代码 50063 出现在 100 个地方时。
如果 NSLogs 是针对 DEBUG 模式添加的,则不需要删除它们。因此,即使您的应用程序崩溃并且它包含用户个人数据,它也会被 ios 删除。所以不用担心用户数据和 NSLog。参考https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AnalyzingCrashReports/AnalyzingCrashReports.html 如果你愿意,你可以在你的应用程序中使用这个PJiOSAppConsole。它只会在您的应用程序中保留日志。您可以在运行时通过在 #ifdef 中添加 sn-p 来使用它,然后在您想要上线时删除它。易于集成和使用。
【讨论】: