Swift 自定义Log(Debug — Release)

NO.1 先了解下 Debug 和 Release 的区别
  • Release是发行版本,比Debug版本有一些优化,文件比Debug文件小 Debug是调试版本,Debug和Release调用两个不同的底层库。
  • 一、"Debug是调试版本,包括的程序信息更多"
  • 二、只有DEBUG版的程序才能设置断点、单步执行、使用TRACE/ASSERT等调试输出语句。
  • 三、REALEASE不包含任何调试信息,所以体积小、运行速度快。
NO.2
  • 在Swift中我们普通打印的话,默认只会打印想要打印的内容不会像OC那样打印附加的一些信息
print(“我是帅哥吗?")
  • 系统只会打印:
Snip20160929_3.png

不会有其它信息,所以我们在调试的时候是不方面的,所以我们需要自己写一个打印方法,来显示一些必要的打印信息,方便我们平时调试程序

NO.3 直接上代码,写在 AppDelegate 中的一个全局函数
func JJLog<T>(messsage : T, file : String = #file, funcName : String = #function, lineNum : Int = #line) {
    let fileName = (file as NSString).lastPathComponent
    print("\(fileName):(\(lineNum))-\(messsage)")
}
  • 使用:
 JJLog("就是帅哥")
Snip20160929_5.png

这样就会显示是在哪个类,哪一行进行的打印

NO.4 最后我们还要设置在Release状态下不会出现这些打印
  • 按下面的操作,给Debug状态设置一个标记,这样系统会判断只在Debug状态才进行打印
Snip20160929_6.png
  • 在Build Settings 搜索 Swift flags 展开Debug 添加标记 并在我们的全局函数中加入判断
func JJLog<T>(messsage : T, file : String = #file, funcName : String = #function, lineNum : Int = #line) {
    
    #if DEBUG
    
    let fileName = (file as NSString).lastPathComponent
    
    print("\(fileName):(\(lineNum))-\(messsage)")
    
    #endif
}
  • 这样设置后,我们的调试打印,在Release情况下就不会再打印了
后记:Swift初学,感谢小码哥。。。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,087评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 文/爱啃骨头的猫咪 文字是视觉媒体中的重要构成要素,文字排列组合的好坏,直接影响着版面的视觉传达效果。 新媒体运营...
    爱啃骨头的猫咪阅读 3,294评论 0 1
  • 意十年 初相见,豆蔻年,少不更事只爱怜。殊不知,一眼已十年。 而如今,梅之年,世事历经...
    一席之宾阅读 194评论 0 2
  • “郑州 90km” 我抬头看到那条高速路边上的牌子。不知道离家具体有多远了,我已经走了一个多月了,一路向南。这十月...
    怪兽在这儿阅读 213评论 2 1