iPhone上很长的生产日志会导致什么问题?

时间:2016-03-30 13:08:04

标签: ios iphone logging nslog

我有自定义键盘扩展程序。它使用编译的库记录了很多连接错误,但在其他情况下工作正常(Apple NSSpellChecker)。有关详情,请参阅this问题(JAL's answer效果不佳)。

问题:

  1. 在iPhone上使用很多生产日志会导致什么样的问题。例如,长日志消耗内存(键盘扩展限制为~40MB)?它可以占用磁盘空间吗?我可能会遇到哪些其他问题?它肯定会减慢应用程序的速度,但在我的情况下这不是问题。

  2. 当我收到来自Apple的崩溃日志时,它们会包含来自NSSpellChecker的所有垃圾邮件日志吗?

  3. @JAL已发现this way如何在应用程序中禁用全局记录 - 包括来自已编译库的日志。它可以工作,但建议的重新启用日志记录的方法不行。如果我用它来全局禁用我的应用程序中的日志,我还会收到来自Apple的有意义的崩溃日志吗?或者只是空日志?

  4. 即使您可以回答其中一些问题,也请随时回答。

1 个答案:

答案 0 :(得分:0)

1 - NSLog()肯定有可能在使用不当时减慢速度。对NSLog()的调用是同步的,以便允许错误打印到控制台,在这一点上您仍然可以观察到导致错误发生的状态。如果你实际上记录错误,这是完美的。如果您只是将一般信息打印到控制台,例如("用户登录")或("收到网络响应:%@",响应),则表示您正在使用NSLog()。如果您决定在迭代器中使用NSLog()或者快速运行并且经常像drawRect或for for循环的方法,您将看到非常显着的性能损失。

根据我的经验,过多的日志记录不应占用设备存储空间中的额外空间,也不应该使用RAM,因为它们是短暂的,系统会随着时间的推移自动清除它们。

话虽这么说,在应用程序的发布版本中错误地使用日志可能会减慢速度并使控制台乱丢垃圾。任何需要随后在淹没在日志中的设备上进行调试的开发人员都不会欣赏它。

2 - 您从Apple和TestFlight收到的日志将是崩溃报告,并且往往只包含与崩溃时线程/执行状态相关的信息。除非异常与NSSpellChecker相关的异常直接相关,否则这些日志不应该主导您的崩溃报告。

3 - 这些方法使用私有API,有可能让您从App Store中被拒绝。如果由于某种原因想要将它们用于开发,请继续。您不应该将它们用于App的生产版本。您应该在未运行调试版本时将日志静音或完全删除它们。使用半文档化的私有日志记录API消除它们很容易让评论者标记它们,如果他们发现它被滥用。