2015-01-14 35 views
0

我不明白爲什麼,即使在Xcode 6上,我需要點擊self,搜索屬性,然後才能看到值。 如果對象有100個屬性,這是非常煩人的。使用Xcode進行調試時,有沒有辦法在代碼中查看鼠標光標時的屬性值?

我在尋找簡單的解決方案,當我把我的鼠標光標移到self.someproperty, 上面的「someproperty」我會看到它的價值,在任何情況下,NSStringNSArray

感謝。

+0

你是指在調試器中? – nburk

+0

我的意思是在實際執行的代碼中設置斷點的位置。實現類。 – user1105951

回答

4

這大概是因爲「屬性」你盤旋在沒有真正的變量。它們是訪問器方法的語法糖(通常引用一個後臺實例變量,但不一定如此)。這些訪問器方法(getter和setter)是爲您合成的,或者您可能已經手動實現了您自己的自定義方法。有關聲明的屬性的更多信息,請參見Declared Properties討論Apple的核心競爭力文件或Properties Encapsulate an Object's Value編程Objective-C文檔。

請考慮下面的foo屬性。你不能懸停在對self.foo的引用上,看看你的期望。但是,如果你將鼠標懸停在實例變量(伊娃),其背上的財產,你可以:

enter image description here

(順便說一句,注意參考上面self.foo = ...不引用foo getter方法,但實際上調用了setter方法setFoo。因此,讓IDE調試器認識到,在執行暫停時,將鼠標懸停在該「屬性」上,但意識到要調用getter來查看該值,這似乎不是一件容易的事情比調用setter的那一行代碼實際引用的要多。)

無論如何,回到IDE,你也可以扭曲開放self,你會看到它,太:

enter image description here

這些技術是不完美的(調試程序有時會很困惑),但希望這說明了基本的UI。

我收集你希望它懸停在屬性名稱上時調用訪問器方法。這是否意味着你也希望它調用鼠標懸停的隨機方法?在一個純粹的函數式語言中,這個概念看起來似乎更合理一些,但在程序語言中,任何方法都可以改變狀態變量併產生一些意想不到的結果,這似乎是危險的。我會認爲,如果你考慮這樣的功能,它應該需要一些更肯定的行動,而不僅僅是徘徊在它上面。

無論如何,如果您確實需要此功能,請在http://bugreport.apple.com處提交「功能請求」。

+0

感謝您的信息。 我仍然認爲Microsoft Visual Studio在2004年或更短時間內做了什麼, Apple XCode在2015年可以做到。 懸停只有在0.2秒後觸發並調用屬性,才能防止觸發不需要的動作。 99%的getter屬性只需要返回值而不會改變狀態。那是什麼方法。 如果該屬性做了更多的事情然後返回值,開發​​人員需要以簡單或難以理解的方式來理解。 順便說一句,即使沒有調用屬性彈出ivar更好,然後搜索自己的財產 – user1105951

0

您可以直接在控制檯中使用LLDB的日誌記錄功能,這是一個巨大的幫助:

在你調試區域的右側部分你有控制檯(這也是所有輸出結果爲NSLog)。

控制檯可以只使用命令po打印對象)和print打印變量的值。

enter image description here

+0

好吧,這在xcode中是不可能的:/你可以去爲它提供一個雷達,這樣蘋果可能會在未來的版本中實現 – nburk

+0

你可以在控制檯中更改變量嗎? – Vincent

相關問題