iPhone開發 iOS中日誌列印Q A

2021-06-11 12:15:06 字數 1317 閱讀 1698

q:如何列印當前的函式和行號?

a:我們可以在列印時使用一些預編譯巨集作為列印引數,來列印當前的函式和行號。如:

1

nslog(@"%s:%d obj=%@", __func__, __line__,obj);

其中__func__和__line__都是預編譯的巨集,編譯時會分別替換為當前函式和當前行號。

下面是一些常用於列印日誌的巨集。巨集說明

__func__

列印當前函式或方法,c字串

__line__

列印當前行號,整數

__file__

列印當前檔案路徑,c字串

__pretty_function__

列印當前函式或方法(在c++中會包含引數型別),c字串

q:如何列印乙個類名,訊息名,當前堆疊資訊?

a:你可以使用以下方法在執行時動態獲取這些資訊。

**說明

nsstringfromselector(sel)

獲取selector的名字

nsstringfromselector(_cmd)

獲取當前方法名

nsstringfromclass([object class])

獲取object的類名

[nsthread callstacksymbols]

獲取當前執行緒的棧,是乙個nsarry,包含堆疊中所有函式名。

q:如何將日誌列印到乙個檔案

a:可以使用freopen函式重定向標準輸出和標準出錯檔案。因為printf函式會向標準輸出(stdout)列印,而nslog函式會向標準出錯(stderr)列印。重新定向標準輸出(stdout)和標準出錯(stderr)到乙個檔案將會使他們列印日誌到乙個檔案中。

1

2

freopen("/tmp/log.txt","a+",stdout);

freopen("/tmp/log.txt","a+",stderr);

iOS中日誌列印Q A

q 如何列印當前的函式和行號?a 我們可以在列印時使用一些預編譯巨集作為列印引數,來列印當前的函式和行號。如 1 nslog s d obj func line obj 其中 func 和 line 都是預編譯的巨集,編譯時會分別替換為當前函式和當前行號。下面是一些常用於列印日誌的巨集。巨集說明 f...

iOS中日誌列印Q A

q 如何列印當前的函式和行號?a 我們可以在列印時使用一些預編譯巨集作為列印引數,來列印當前的函式和行號。如 1 nslog s d obj func line obj 其中 func 和 line 都是預編譯的巨集,編譯時會分別替換為當前函式和當前行號。下面是一些常用於列印日誌的巨集。巨集說明 f...

iOS開發cordova適配iPhone X

需要更新的外掛程式有cordova plugin splashscreen cordova plugin statusbar cordova plugin ionic webview。更新完webview的外掛程式之後會出現網路請求失敗的問題 跨域問題 解決方案新增 cordova plugin w...