• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift中自定义Log打印方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

系统如何调用super方法

系统默认只会在构造函数中,自动调用super.init()方法,而且是在所写方法的尾部进行调用.

在其他函数中,如何需要调用父类的默认实现,都需要手动去实现.

如果在构造函数中使用KVC,一定要先调用父类的super.init()方法.

自定义Log的方法

以下语法为swift3的最新语法

  • 获取打印所在的文件
    • let file = (#file as NSString).lastPathComponent
  • 获取打印所在的方法
    • let funcName = #functon
  • 获取打印所在的行
    • let lineNum = #line

swift中有全局函数的概念:即将函数定义在项目中任意一个类文件的class外面,就可以在项目中的任何地方均可以调用这个方法.

自定义Log方法就是基于swift的全局函数来实现的.

另外,自定义log的时候,要考虑到在debug环境下进行打印,而在release环境下不需要进行打印.

由于swift中没有宏定义的概念,所以需要在项目的Build Settings->Other Swift Flags中为Debug添加一个标记,例如"-D DEBUG".

这样,在代码中,可以直接通过"DEBUG"这个关键词,来判断当前的运行环境是否为debug模式.

下面为自定义的Log方法:

func WJQLog<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
}

// 调用代码如下:
WJQLog("test")

解释:

  • 考虑到自定义Log要打印方法所在的文件/方法名/行号,以及自定义的内容,同时考虑调用的便捷性,所以要使用默认参数,无需调用者传递太多的参数.
  • 使用泛型,可以让调用者传递任意的类型,进行打印Log的操作.
  • #if DEBUG和#endif用来判断,只有在debug环境下,才执行Log里面的代码进行打印操作.在release环境下,不进行打印.

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用CoreLocation进行定位(Swift版)发布时间:2022-07-13
下一篇:
Swift 修改状态栏发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap