Swift中自定义Log

自定义Log

/*
泛型
如果想在函数中使用泛型, 那么必须告诉系统这是一个泛型函数
格式: func 函数名称<T>(形参列表) -> 返回值类型 {}
T具体是什么类型由调用者来确定, 调用者传递的事什么类型, T就是什么类型
*/
func CTLog<T>(message: T, fileName: String = #file, methodName: String = #function, lineNumber: Int = #line) {
   
   // swift里想要用宏, 需要在[Build Settings]->[Custom Flags]里加入自定的宏命名, eg: -D DEBUG, 名字随意~
   #if DEBUG
       print("\(methodName)[\(lineNumber)]:\(message)")
   #endif
}
67CCA466-D5A1-4D9A-B7F1-891806A6103E.png

或者参照系统默认的print()方法, message类型为Any表示任意类型

func CLog(message: Any, fileName: String = #file, methodName: String = #function, lineNumber: Int = #line) {
//    print("\((fileName as NSString).pathComponents.last!).\(methodName)[\(lineNumber)]:\(message)")
    
    #if DEBUG
    print("\(methodName)[\(lineNumber)]:\(message)")
    #endif
}

调用方式

//        print(#function)
//        print(#file)
//        print(#line)
        CLog("abc")
        CLog(10)
        CLog(10.7)
        CLog(Any)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 自定义代码片段(code snippets) Xcode的代码片段(Code Snippets)创建自定义的代码片...
    哆啦_阅读 1,694评论 0 2
  • 自定义LOG的最终目的:让打印信息在 DEBUG 的环境下打印,在 RELEASE 的环境下不打印 Swift中默...
    xiaoyouPrince阅读 413评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • OC系统会自定添加宏,而swift没有,如果我们想暴力调试可以进行以下操作,一般我们把这个函数写在AppDeleg...
    飞飞hang阅读 1,845评论 1 4
  • func XJLog(message:T,file : String = #file, funName : Str...
    HsuKit阅读 122评论 0 0