zoukankan      html  css  js  c++  java
  • Swift中自定义Log打印方法

    系统如何调用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环境下,不进行打印.
  • 相关阅读:
    linux常用的一些命令
    C语言之初认识
    前端VUE基于gitlab的CI_CD
    【Github】在repo中添加其它repo: adding embedded git repository
    【Algorithm】Sorting Algorithm
    【gitbook】gitbook init报错解决
    8 款浏览器兼容性测试工具介绍,需要的赶紧收藏吧!
    软件测试适合女生吗?大厂内部测试人员这样说!
    6 大测试用例设计题详细整理— 助攻高薪求职之路!
    APP 兼容性测试之云测平台体验
  • 原文地址:https://www.cnblogs.com/coderwjq/p/6012177.html
Copyright © 2011-2022 走看看