2011-08-01 7 views
2

私はNSMutableArrayの(それが適切にallocedとinitedされています)にオブジェクトを追加しようとしています。 addObjectを実行した後、デバッガは、配列に正しい数の要素が含まれているが、すべての要素が0x0を指していることを示します。私はプログラムの後半で要素にアクセスすることはできません。スクリーンショットは、私が何をしないのですNSMutableArrayののaddObject(NULLポインタが追加されます)

http://imageshack.us/photo/my-images/818/screenshot20110801at344.png/

ここですか?配列に追加される「嵐」オブジェクトは、デバッガでよさそうだということ

ノート...

感謝!

+0

がどのようにcycloneDatabaseを初期化/割り当てている:*あなたは、この場合には、あなたがされていない、参照することにより戻ってきているので、それは本当にただcyloneWithNameする必要がありますを意味しますか? – highlycaffeinated

+0

このブレークポイントでコンソール/出力ウィンドウで 'po cycloneDatabase'を実行するとどうなりますか? (GUI変数の解釈は信頼できないことが分かりました。) –

+0

<__ NSArrayM 0x5a4e7f0>( ) – Dmitri

答えて

4

あなたが投稿したコードから、すべてが正常に見えます。あなたが過度にリリースしていた場合は、配列内のポインタを明示していないでしょうし、addObjectを2回呼び出すと2つの要素が見えます。間違っているかもしれない1つのことは、サイクロンデータベース配列の初期化です。正しく初期化していることを確認してください。cycloneDatabase = [[NSMutableArray alloc] init]私は前にこれを見たことがあるとは言えません。

P.S.ややニックピック、getCycloneWithName:のようなメソッドでget *を使うべきではありません。 :)

+2

同意し、NSArrayは 'nil'sを保持できないので、デバッガはおそらく何とかしているでしょう。他のものがなければ、配列は実際にこの時点で問題ないと思います。@Dmitriが後で要素にアクセスできない場合は、別の場所で別のものが実行されています。 –

+0

@quixoto gdbのチップをありがとう。私が見たいと思った値を表示していないデバッガは、問題の少なくとも一部でした。残りの部分については、私は最終的にそれを把握しなければなりません...これは私にユニットテストとコードの整理の教訓を教えてくれると思います。 (すなわち、comp.sci専攻/専門家のように、comp.sci。territoryの場合) – Dmitri