2012-02-21 133 views
31

我已經看到爲調試目的提及描述和debugDescription,但還沒有看到何時使用哪個和哪些條件下可能產生不同結果的準確解釋。NSObject描述和調試描述

NSObject的文檔在debugDescription上也沒有任何內容。問題:什麼時候使用哪種產品,以及在什麼條件下,他們的產量會不同?

回答

37

Technical Note TN2124

注:打印對象實際上是調用指定對象的debugDescription方法。 NSObject通過調用描述方法來實現此方法。因此,默認情況下,對象的調試描述與描述相同。但是,如果要解耦這些,則可以覆蓋debugDescription;許多可可物體都這樣做。

如果您已經實施了debugDescription,則在GDB中打印對象將顯示其結果。知道在UI中使用description(我知道綁定可以做到這一點),您可能希望使用它來打印用戶不需要看到的一些附加信息。

1

一個除了已經告訴的東西。

如果您想在lldb中使用po來改善輸出,您可以覆蓋debugDescription方法。請記住,打印自我(對象本身)將調用描述方法。如果由於某種原因<ClassName: objectAddress>不適合您,也會覆蓋該方法。

所以我在這裏要強調的是,打印自己將調用description方法,而po調用debugDescription默認情況下調用描述。給這個你可以區分這個調用的結果。