22

lldb を使用して iOS アプリをデバッグしようとしていますが、デバッグ時に非常に奇妙なエラーが発生します。

ブレークポイントの数行前に、次のものがあります。

CGRect frame = view.frame;

print framelldbのコマンドで問題なくアクセスできます。ただし、lldb でフレームに再度アクセスしようとすると、入力print view.frameして次のエラーが表示されます。

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

入力して正しい結果を取得することで、viewUIView*インスタンスであり、 frame と呼ばれる有効なプロパティがあることを確認できるため、これは意味がありません。po view

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

この特定の lldb エラーはよく発生しますが、このエラーの原因を見つけることができませんでした誰かがプロパティ '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 コマンドが「機能する」と強く疑っています。とにかく別のデバッガー内。

ランダムに発生するこのバグに対する提案や回避策はありますか?

4

3 に答える 3

57

Objective-C を使用する場合、メッセージ送信のドット表記は lldb でサポートされません。ブラケット表記を使用して、結果を CGRect にキャストします。

p (CGRect)[view frame]
于 2012-12-23T01:24:52.320 に答える
3

上記が機能しない場合に備えて (UITableViewCell から派生した変数セルのフレームを探して、私にとってはうまくいきませんでした): 余分な括弧を強制することは、lldb の小さな頭脳を助けるように見えました:

p ((CGRect)[cell frame])

プレストマジコ:

(CGRect) $5 = origin=(x=0, y=0) size=(width=320, height=44)
于 2013-12-01T21:36:42.840 に答える