Log

在 Swift 中,編譯器為我們準(zhǔn)備了幾個(gè)很有用的編譯符號(hào),用來處理類似這樣的需求卷哩,它們分別是:

符號(hào) 類型 描述
#file string 包含這個(gè)符號(hào)的文件的路徑
#line Int 符號(hào)出現(xiàn)處的行號(hào)
#column Int 符號(hào)出現(xiàn)處的列
#function String 包含這個(gè)符號(hào)的方法名字

因此,我們可以通過使用這些符號(hào)來寫一個(gè)好一些的 Log 輸出方法:

func printLog<T>(message: T, 
                    file: String = #file,
                  method: String = #function, 
                    line: Int = #line)
{
 print("\((file as NSString).lastPathComponent)[\(line)], \(method): \(message)")
}

這樣属拾,在進(jìn)行 log 的時(shí)候我們只需要使用這個(gè)方法就能完成文件名将谊,行號(hào)以及方法名的輸出了。最棒的是渐白,我們不再需要對這樣的輸出進(jìn)行維護(hù)尊浓,無論在哪里它都能正確地輸出各個(gè)參數(shù):

// Test.swiftfunc 
method() 
{ 
  printLog("這是一條輸出") 
}
// 輸出:Test.swift[62], method(): 這是一條輸出

另外,對于 log 輸出更多地其實(shí)是用在程序開發(fā)和調(diào)試的過程中的纯衍,過多的輸出有可能對運(yùn)行的性能造成影響栋齿。在 Release 版本中關(guān)閉掉向控制臺(tái)的輸出也是軟件開發(fā)中一種常見的做法。如果我們在開發(fā)中就注意使用了統(tǒng)一的 log 輸出的話,這就變得非常簡單了瓦堵。使用條件編譯的方法基协,我們可以添加條件,并設(shè)置合適的編譯配置菇用,使 printLog的內(nèi)容在 Release 時(shí)被去掉澜驮,從而成為一個(gè)空方法:

func printLog<T>(message: T, 
                    file: String = #file, 
                  method: String = #function, 
                    line: Int = #line)
{ #if DEBUG
   print("\((file as NSString).lastPathComponent)[\(line)], \(method): \(message)")
 #endif
}

新版本的 LLVM 編譯器在遇到這個(gè)空方法時(shí),甚至?xí)苯訉⑦@個(gè)方法整個(gè)去掉惋鸥,完全不去調(diào)用它杂穷,從而實(shí)現(xiàn)零成本。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末揩慕,一起剝皮案震驚了整個(gè)濱河市亭畜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迎卤,老刑警劉巖拴鸵,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蜗搔,居然都是意外死亡劲藐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門樟凄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來聘芜,“玉大人,你說我怎么就攤上這事缝龄√郑” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵叔壤,是天一觀的道長瞎饲。 經(jīng)常有香客問我,道長炼绘,這世上最難降的妖魔是什么嗅战? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮俺亮,結(jié)果婚禮上驮捍,老公的妹妹穿的比我還像新娘。我一直安慰自己脚曾,他們只是感情好东且,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斟珊,像睡著了一般苇倡。 火紅的嫁衣襯著肌膚如雪富纸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天旨椒,我揣著相機(jī)與錄音晓褪,去河邊找鬼。 笑死综慎,一個(gè)胖子當(dāng)著我的面吹牛涣仿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播示惊,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼好港,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了米罚?” 一聲冷哼從身側(cè)響起钧汹,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎录择,沒想到半個(gè)月后拔莱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隘竭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年塘秦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片动看。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尊剔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出菱皆,到底是詐尸還是另有隱情须误,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布仇轻,位于F島的核電站霹期,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拯田。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一甩十、第九天 我趴在偏房一處隱蔽的房頂上張望船庇。 院中可真熱鬧,春花似錦侣监、人聲如沸鸭轮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窃爷。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間按厘,已是汗流浹背医吊。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逮京,地道東北人卿堂。 一個(gè)月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像懒棉,于是被迫代替她去往敵國和親草描。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容