2012-03-27 72 views
15

我試圖調試一個iOS應用程序,我在模擬器中遇到了lldb問題。調用類方法似乎不起作用。實例方法正常工作。如何用lldb在iOS模擬器中調用類方法?

(lldb) po Category 
<no result> 
(lldb) po [Category class] 
error: Couldn't prepare the expression for execution in the target 
(lldb) po self 
(TagsTableViewController *) $5 = 0x085585a0 <TagsTableViewController: 0x85585a0> 

我試過4.3和5.1模擬器,但都顯示相同的問題。

在設備上進行調試時,一切正常。

+3

我在想這可能是lldb中的一個bug,但我在此期間找到了一個解決方法。這是有點尷尬,但它的工作原理: 'po [(Class)objc_getClass(「ClassName」)class]' – devioustree 2012-03-27 10:36:52

回答

19

This works。感謝@devioustree回答了上面的評論。

基本命令的結構是這樣的:

po [(Class)objc_getClass("ClassName") class] 

要調用someClassMethodHere

po [[(Class)objc_getClass("ClassName") class] someClassMethodHere] 
0

添加此對接受的答案擴大...

如果你想給lldb中的一個變量賦一個新的值,就像我一樣,而不是隻是打印出數值然後做這樣的事情......

expr self.myArray = (NSArray*)[[(Class)objc_getClass("NSArray") class] arrayWithObjects:@"valueOne",@"valueTwo",@"etc",nil] 
相關問題