改善Objective C的日誌輸出

2021-09-21 21:47:08 字數 1121 閱讀 1080

我該如何在日誌輸出資訊中新增上下文資訊,例如當前方法或者行號。

c預處理器提供了一些標準巨集,可以提供當前檔案,行號,或者函式的資訊。另外,objective-c有_cmd隱式引數,可以提供當前函式的選擇器,以及將選擇器和類轉換為字串的功能。你可以在除錯或者錯誤處理時在nslog語句中提供這些上下文資訊。

下面是列印當前方法和行號的例子。

nsmutablearray *someobject = [nsmutablearray array];
nslog(@"%s:%d someobject=%@", __func__, __line__, someobject);
[someobject addobject:@"foo"];
nslog(@"%s:%d someobject=%@", __func__, __line__, someobject);

下面是在日誌語句中很有用的非常常見的巨集和表示式。

c/c++/objective-c中用於日誌輸出的預處理巨集.

macro

format specifier

description

__func__

%s當前函式前面

__line__

%d原始碼檔案中的行號

__file__

%s原始碼檔案完整路徑

__pretty_function__

%s和__func__類似, 但是在 c++ **中包含更多的資訊.

objective-c中用於日誌輸出的表示式

expression

format specifier

description

nsstringfromselector(_cmd)

%@當前選擇器的名字

nsstringfromclass([self class])

%@當前物件類的名字

[[nsstring stringwithutf8string:__file__] lastpathcomponent]

%@原始碼檔案的名稱

[nsthread callstacksymbols]

%@當前棧資訊的刻度字串陣列。僅用於除錯,不用向終端使用者展示或者在**中用作任何邏輯。

改善Objective C的日誌輸出

我該如何在日誌輸出資訊中新增上下文資訊,例如當前方法或者行號。c預處理器提供了一些標準巨集,可以提供當前檔案,行號,或者函式的資訊。另外,objective c有 cmd隱式引數,可以提供當前函式的選擇器,以及將選擇器和類轉換為字串的功能。你可以在除錯或者錯誤處理時在nslog語句中提供這些上下文資...

我的Gentoo有待改善

1.缺少乙個漂亮的splash,聽說有乙個完美的字元介面fbsplash,一定得用 2.openbox還是沒有配置完美,因為選單都還沒有自己清理,只是在上面加上了自己的。3.換gdm嗎?使用輕量級的slim?4.使用bfs補丁重新編譯乙個核心,聽說能極大的提速桌面,有多塊呢?人可以感覺到的提速!5....

改善PHP的執行效率

1 如果能將類的方法定義成static,就盡量定義成static,它的速度會提公升將近4倍。2 並不是事必物件導向 oop 物件導向往往開銷很大,每個方法和物件呼叫都會消耗很多記憶體。3 row id 的速度是 row id 的7倍。4 echo 比 print 快,並且使用echo的多重引數 譯註...