安全快捷地处理快速日志并进行测试
如果您开始使用Swift开发iOS或OS X应用程序,也许DDLog这个词不会引起您的注意,但是您不必担心,如果您不使用DDLog可以代替NSLog(除其他外)希望您的日志在版本中可读。
出于多种原因,实际上不建议发布带有日志的应用程序,例如:
- NSLog由于其同步性而减慢了应用程序的速度
- 通常会记录网络请求,并且您可能不希望其他人知道您的后端如何工作
您肯定会注意到的另一件事是, 您不需要每次都拥有所有日志 ,实际上调试过程通常是这样构造的:
- 构建应用
- 降落在您需要测试的视图(或其他任何视图)上
- 清除日志控制台
- 做测试并查看日志
一种简单的解决方案是使用彩色原木,但是一旦使用了已知的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。
感谢您的阅读,直到这里,我希望您像我一样喜欢这种解决方案🙂