2012-03-27 5 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のバグかもしれないと思っていますが、私はその間に回避策を見つけました。それは少し厄介ですが、それは動作します: 'po [(Class)objc_getClass(" ClassName ")class]' – devioustree

答えて

19

これは機能します。上記のコメントで答えた@devioustreeに感謝します。

基本的なコマンドは次のように構成されている:あなたがしようとしている場合

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

受け入れ答えに拡大するために、これを追加しています...

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

someClassMethodHereを呼び出すために、私はちょうど値を印刷する代わりに、このような何かを行う代わりに、lldbの変数に新しい値を割り当てます。

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