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...