0

IOS でクラスメンバー変数の値を取得する方法を知っている人はいますか?

クラスメンバー変数で NSArray をデバッグするために LLDB を使用しようとしています。

これを実行した後

__cellDataShadowArray2D = [[NSArray alloc] initWithObjects:[NSArray arrayWithObjects:obj1, obj2, nil], nil];

LLDB(印刷オブジェクト)を使って値を確認すると、いつもこれが出てきます。

(lldb) po __cellDataShadowArray2D
(NSArray *) $66 = 0x001e8894 <object returned empty description>

(lldb) p __cellDataShadowArray2D
(NSArray *) $67 = 0x001e8894

(lldb) po [__cellDataShadowArray2D count]
2012-04-24 10:10:38.535 SOME [61985:15803] -[__NSCFConstantString count]: unrecognized selector sent to instance 0x1e8894
(id) $68 = 0x00000000 <nil>

(lldb) po [__cellDataShadowArray2D retainCount]
(id) $69 = 0xffffffff [no Objective-C description available]

(lldb) p (int) [__cellDataShadowArray2D retainCount]
(int) $70 = -1

(lldb) p (int) [__cellDataShadowArray2D count]
2012-04-24 10:11:31.333 SOME [61985:15803] -[__NSCFConstantString count]: unrecognized selector sent to instance 0x1e8894
(int) $71 = 0
4

3 に答える 3

1
  • テストを実行する前に、コード行が実際に評価されることを確認してください。

__cellDataShadowArray2D がコンパイルされた定数文字列の空のインスタンスを指していることは明らかです。@""。つまり、オーバーリリースなどはできません。これは、割り当てがまだ行われていないことを意味します (または、最適化されたコードをデバッグしようとしていて、デバッガーが最適化のために混乱しています)。

  • 非オブジェクト型の po は意味がありません

  • retainCount役に立たない。呼ばないで。

于 2012-04-25T16:47:12.737 に答える
0

これは間違いなくLLDBの問題です。私は同じことをしました、まったくデバッグしませんでした。GDBに切り替えて、問題ありませんでした

于 2012-05-14T11:34:55.860 に答える
0

これが役立つかもしれません: https://devforums.apple.com/thread/142235?start=0&tstart=0

于 2012-04-24T01:56:22.907 に答える