2011-07-20 6 views
3

私は "myData"というNSDictionaryオブジェクトを持っていますが、私はそれをUITableViewDelegateメソッド "didSelectRowAtIndexPath"からアクセスしようとしています。NSDictionaryの値にアクセスするとアプリケーションがクラッシュしますが、そのキーにアクセスするとアプリケーションはクラッシュしますか?

if(myData == nil) { /* it doesn't print here, so it's not nil */ } 
NSLog(@" * Keys: %@", [myData allKeys]); // Outputs all of the keys. 

をしかし、私はこれらの操作のいずれかを実行しようとした場合、アプリケーションは、いかなる種類の警告、エラー、または出力でクラッシュ:

私は罰金、これらの操作を行うことができます

[myData objectForKey:@"akey"]; 
[myData allValues]; 

誰もがこれを引き起こしているかもしれないアイデアを持っていますか?

+0

辞書をどのように構築したかを示すコード – bshirley

+0

JSONから直接取り込まれ、メッセージクラスの「記憶領域」変数(配列)をコールバックからのコールバックとしてView Controllerに渡しましたASIHTTPRequestオブジェクト – TigerTrussell

答えて

1

myData wasのようなサウンドには有効なリファレンスが含まれていません。あなたはそれを放しますか、または読んだ後にそれを保持することを忘れましたか?

[更新]:安全な側に置いて除外するには、辞書を作成した後(テスト用です)、クラッシュが消えるかどうかを確認してください。そうでない場合は、他の変数がmyDataを上書きしている可能性があります。 2つのブレークポイントを設定します.1つは辞書がmyDataに割り当てられ、もう1つはクラッシュポイントの前に割り当てられます。たとえば、合理的な要約が表示されている"2つの鍵ペア"。

+0

正直言って、私の記憶管理スキルは同等ではありません。私はこれが2つのことを除いてそうかもしれないと考えていました:1)それはなぜまだキーを示すのですか?それはメモリが解放されているのに上書きされていないからですか?そして2)EXC_BAD_ACCESSエラーが表示されないのはなぜですか? – TigerTrussell

+0

あなたはEXC_BAD_ACCESSも期待しています。上記の私の更新を参照してください。 – Kay

+0

私は無駄にそれを保持しようとしました。私もmyData = [[[msg.storage objectAtIndex:0] copy] retain]と何もしませんでした:(。 – TigerTrussell

関連する問題