安全快捷地处理快速日志并进行测试

如果您开始使用Swift开发iOS或OS X应用程序,也许DDLog这个词不会引起您的注意,但是您不必担心,如果您不使用DDLog可以代替NSLog(除其他外)希望您的日志在版本中可读。

出于多种原因,实际上不建议发布带有日志的应用程序,例如:

  • NSLog由于其同步性而减慢了应用程序的速度
  • 通常会记录网络请求,并且您可能不希望其他人知道您的后端如何工作

您肯定会注意到的另一件事是, 您不需要每次都拥有所有日志 ,实际上调试过程通常是这样构造的:

  1. 构建应用
  2. 降落在您需要测试的视图(或其他任何视图)上
  3. 清除日志控制台
  4. 做测试并查看日志

一种简单的解决方案是使用彩色原木,但是一旦使用了已知的7或8种颜色,就必须对不同的原木重新使用相同的颜色。 如果您是一个知道超过8种颜色的女孩,则可以这样做(也许是因为这样,女人在编码方面比男人要好?:D),但至少我需要找出一种更好的方法。

所以让我们回顾一下到目前为止

  • 我们仅在必要时才需要日志
  • 我们不希望发布日志

我们如何才能有效地解决这个问题? 当然有枚举。

问题

让我们想象一下,我们有一个从后端检索并希望在TableView中显示的小猫的列表。

我们要登录

  • 网络请求和响应
  • 关于视图的操作(显示一个新的单元格,点击一个单元格,等等)

并且我们不希望手动导航我们的应用程序,直到包含TableView的视图控制器为止(是的,我们很懒惰)。

这是代码

基本上,每种类型的日志都有一个大小写,因此我们可以使用isEnabled和#if DEBUG阻止释放中启用任何大小写的功能来分别打开和关闭它们。

您可能已经注意到,枚举名称是Test而不是Log 。 那是因为:

  • 我发现阅读诸如Test.kittensNetworkService.stuff()之类的内容更容易理解
  • 此解决方案不仅限于日志:请记住,在小猫VC之前我们不手动导航?

用法

我们要记录所选单元格的indexPath吗?

我们要导航到KittensVC吗?

如果我们需要在任何情况下执行某项操作,则可以使用performBlockFor方法

PS:

要使用#if DEBUG宏,我们必须在目标/ Swift编译器-自定义标志/其他swift标志的Build阶段中添加值-D DEBUG。

感谢您的阅读,直到这里,我希望您像我一样喜欢这种解决方案🙂