iOS-SwiftSwiftiOS-Swift

Swift 小技巧 -- 自定义调试信息打印

2016-08-13  本文已影响2718人  devZhang

今天想记录和分享一个 Swift 中的自定义调试信息打印小技巧. 之前写过一个 OC 自定义 log 的文章, 有需要的可以去查看-->iOS 开发技巧-更好的自定义 Log

什么是调试信息打印

一般在调试项目的时候我们需要往控制台打印一些信息, 以便来查看相应的代码执行情况, 在 OC 中默认是使用 NSLog 打印, Swift 中默认使用 print打印. (C语言中使用的是printf, 和 Swift 很像).

为什么要自定义调试信息的打印?

这个是因为, 如果我们使用默认的打印方式, 那么无论你是在Debug的开发阶段, 还是在Release的发布阶段, 打印信息会一直打印, 这在 APP 上架时是不允许的. 而 我们自定义太拼信息打印的目的, 就是要达到调试时打印, 发布时就不再打印.

如何自定义调试打印

OC 中的方法就不赘述了, 之前已经写过. Swift 有些不同, 因为OC 中的自定 Log, 一般是定义在.pch 的宏定义文件中, 但是 Swift 中已经没有宏定义文件了. 那么就不能自定义了吗? 其实不是的, 因为 Swift 只要在一个文件中声明了一个公开的方法, 其他文件都是可以访问到的. 所以, 你可以把自定义 Log 的方法放到任何一个文件中, 但为了方便管理和使用, 我建议还是可以把这一类公共使用的方法放到一个统一的文件中.

下面是我用的自定义方法:

import UIKit

func XFLog<T>(message : T, file : String = __FILE__, lineNumber : Int = __LINE__) {
    
    #if DEBUG
        
        let fileName = (file as NSString).lastPathComponent
        print("[\(fileName):line:\(lineNumber)]- \(message)")
        
    #endif
}

使用方式:

XFLog(message)

括号内可以直接放变量名. 也可以直接打印整形数. 如果需要打印一个没有定义的字符串, 需要加"" . 例如想打印一句 "我是测试语句", 需要写成

XFLog("我是测试语句")

使用注意

应该有看到我在里面加了个

#if DEBUG

#endif

意思是先判断是调试模式还是 release 发布模式. 但这样写之后并不能使用的, 也就是不会执行打印, 还需要在项目配置中修改一下设置, 如下图


第3步那里是展开, 第4步在 Debug 后面点击加号, 第5步在出现的方框里填入 -D DEBUG . -D 后面是一个标识, 用来区分是什么模式, 你也可以叫其他名字, 但我觉得叫 DEBUG 比较通俗易懂. 这个标识是和上面我自定义调试打印信息里的判断相对应的.

这个时候再运行就能看到打印结果了

[ViewController.swift:line:21]- 我是测试语句

结果显示出测试语句所在的文件名, 所在文件中的行数, 以及你要打印的信息.

补充

当然, 你也可以在打印信息里加上方法名之类的, 无非就是再加个参数. 但个人觉得没必要了, 已经知道打印信息所在的文件和行号, 就够了.

在各个 iOS 群里交流时也发现, 越累越多的人在问 Swift 相关的问题, 也有很多已经工作的朋友们提到说项目有要求用 Swift 来写了, Swift 早晚会火起来的(苹果的愿景)
其实最近我也是在找工作. 坐标武汉, 众所周知, iOS 开发工作目前不好找, 自己就继续利用这些时间继续好好学习, 提升自己的能力. 所以把 Swift 语法又仔细过一遍, 打算用 Swift 模仿一下新浪微博(已经在模仿中了), 综合一下所学知识. 也希望能给自己找工作, 加点筹码吧.

上一篇下一篇

猜你喜欢

热点阅读