swift和OC的自定義Log有一些不同,具體代碼如下
//// AppDelegate.swift// Test//// Created by fe on 2017/03/03.// Copyright © 2017年 fe. All rights reserved.//import UIKit@UIapplicationMainclass AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. MyLog(message: "hello world") return true }}//自定義Log/* 1:自定義Log一般寫在AppDelegate文件中,作為一個(gè)全局函數(shù),在整個(gè)項(xiàng)目中都可以調(diào)用 2:<T>:表示參數(shù)可以是任意類型,<>內(nèi)的文字可以任意寫 3:file:String = #file ,使用默認(rèn)參數(shù)獲取到打印語(yǔ)句所在的類名,#file相當(dāng)于OC和swift3.0前的__FILE__ 4:funcName:String = #function ,使用默認(rèn)參數(shù)獲取到打印語(yǔ)句所在的方法名,#function相當(dāng)于OC和swift3.0前的__FUNCTION__ 5:lineNum:Int = #line ,使用默認(rèn)參數(shù)獲取到打印語(yǔ)句所在的行號(hào),#line相當(dāng)于OC和swift3.0前的__LINE__ */func MyLog<T>(message:T,file:String = #file,funcName:String = #function,lineNum:Int = #line){ let fileName = (file as NSString).lastPathComponent PRint("/(fileName)---->row/(lineNum)---->/(message)")}自定義Log還有一個(gè)重要的用途,就是可以讓這些輸出語(yǔ)句在Debug的編譯環(huán)境下可以打印,在Release環(huán)境下不能打印輸出,節(jié)省性能,需要配置一下編譯狀態(tài),以便輸出時(shí)候做判斷,如下圖
然后在打印方法中做這樣的判斷,代碼如下
func MyLog<T>(message:T,file:String = #file,funcName:String = #function,lineNum:Int = #line){ #if DEBUG let fileName = (file as NSString).lastPathComponent print("/(fileName)---->row/(lineNum)---->/(message)") #endif}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注