2012-12-23 63 views
20

我正在嘗試使用lldb調試我的iOS應用程序,並且在調試時出現了很奇怪的錯誤。lldb錯誤:在類型對象上找不到屬性

我的斷點前幾行,我有:

CGRect frame = view.frame;

,我可以用在LLDB print frame命令沒有問題訪問。然而,當我嘗試在LLDB再次訪問框架,I型print view.frame並得到以下錯誤:

error: property 'frame' not found on object of type 'UIView *'

這是沒有意義的,因爲我可以驗證viewUIView*實例並具有稱爲幀有效的屬性通過鍵入po view並得到正確的結果:

(UIView *) $4 = 0x1e199bf0 <MyAppCustomView: 0x1e199bf0; frame = (3398 3396; 204 208); layer = <CALayer: 0x1e199ce0>>

這種特殊LLDB錯誤發生在我身上很多,我可以找不到此錯誤的原因。有人建議在Property 'count' not found on object of type 'NSMutableArray *' PO command in lldb,可以使用gdb作爲(gdb) p view.frame,但我得到error: '(gdb)' is not a valid command.,我高度懷疑gdb命令會「工作?」無論如何,在另一個調試器內。

任何有關此錯誤隨機出現的建議或解決方法?

+0

打印[圖幅] –

+0

已經嘗試過:錯誤:沒有已知的方法 '-frame';將該消息發送到方法的返回類型 –

+0

print [(UIView *)view frame] does not work要麼 –

回答

50

lldb不支持消息發送的點符號。用括號標記,並把結果給的CGRect:

p (CGRect)[view frame] 
+0

(lldb)p [查看框架] 錯誤:沒有已知方法'-frame';將編輯的消息發送到方法的返回類型 –

+0

。我應該明確地施展它的任何理由?以及有時爲什麼會出現這種想法,否則,lldb只是在沒有任何演員的情況下與po/print完美地工作? –

+3

@canpoyrazoğlu因爲當LLDB查詢運行時時,它不知道要打印的非對象的類型,所以cast會給它一個承諾類型。 – CodaFi

3

萬一上面不工作(它沒有對我來說,尋找框架的,用於可變單元,從類派生的UITableViewCell):迫使額外的括號似乎幫助LLDB的小玩意大腦:

p ((CGRect)[cell frame]) 

似的魔幻:

(CGRect) $5 = origin=(x=0, y=0) size=(width=320, height=44) 
+0

這個答案應該是公認的答案,因爲這仍然LLDB沒有抱怨外括號。 – inix

相關問題