2011-08-10 17 views
0

私はNSMutableArraypurDesc、これはNSMutableDictionary,purDetailsを保持しています。 辞書の配列

singleton purDesc Dump:(
     { 
    }, 
     { 
    }, 
     { 
    }, 
     { 
    }, 
     { 
    } 
) 

今すぐサイズ/外観/ダンプは、私は辞書を追加/削除される回数を反映するために辞書を追加するたびに変更します。私は NSLog(@"%@", purDesc);を使用する場合には、次のようにdictionarysがあるはず空のスペースを返します。ここでは、コードスニペットは、私のXMLパーサから取られています。

...私が間違っているのと、なぜログが半空をアップ来ている何

else if ([elementName isEqualToString:@"purDesc"]) 
{ 
    //close purDisc 
    // dumps dictionary into log 
    NSLog(@"End of purDesc"); 
    NSLog(@"Dump:%@", [purDesc description]); 

    [singleton setPurDesc:purDesc];//sets this response to the response in the singleton 

    NSLog(@"singleton purDesc Dump:%@", [[singleton purDesc] description]); 
    return;//we're done here 
} 
else if ([elementName isEqualToString:@"PurDetails"]) 
{ 
    //close purDetails 
    // dumps dictionary into log 
    NSLog(@"End of PurDetails"); 
    [purDetails addEntriesFromDictionary:description];//sets current purDetails to current description 
    NSLog(@"Dump:%@", [purDetails description]); 

    [purDesc addObject:purDetails];//adds purDetails dictionary to purDesc 
    [purDetails removeAllObjects]; 
    NSLog(@"Current purDesc:%@", [purDesc description]); 
} 

+1

実際に配列と辞書をどのように満たしていますか?私は辞書が*空であると思います。シングルトンとは何ですか?[singleton purDesc]とは何ですか? purDescとはどのような関係がありますか?実際に何が起こっているのか、何が間違っているのかは実際には分かりません。 –

+0

ログに記録すると値が表示されます。たとえば、NSLog(@ "Dump:%@"、[purDetails description]);ダンプを返します。{ amt = "1.29"; desc = test; } – Baub

+1

はい、それはpurDetailsです。私は、何が何で、何が間違っているかを見るために、より多くのコードを見る必要があります。 –

答えて

3

は、私はあなたが行うことを参照してください。参照を格納

[purDesc addObject:purDetails];//adds purDetails dictionary to purDesc 
[purDetails removeAllObjects]; 

purDetails からpurDescで、その保持カウントをインクリメントしますが、それは、コピーを作成していない。したがって、removeAllObjectsの場合、辞書の内容は失われます。 purDescに参照を「格納」しても、それは変わりません。あなたが見ているのは、これまたは同様の行動の結果だと思います。

辞書を再利用することはできません。毎回新しいものを割り当てて初期化する必要があります。 あなたはあなたが持っているが、クリアしてはいけません。

あなたのデザインを改善する方法を知るにはもっとコードを見なければならないので、これは問題ではなく、メモリ管理は適切に行われます。

+0

これは完全に機能します!ありがとうございました! – Baub

+0

見つけた人は、[purDetails removeAllObjects]という行を削除しました。私は新しいものが必要なときに毎回allocとinitを実行します。 – Baub

+0

これに関係するメモリ管理(特に参照カウント)の問題に注意してください。あなたはあなたが割り当てたものを解放すべきです。リリースする時期を知るにはちょっとした経験が必要です。それを正しくするには数週間かかりましたが、私はまだそのようなことについて懸命に考える必要があります。私はARCがこれを少し楽にすると思います。 –

関連する問題