は、私はそうのように、私はヘッダファイルにNSMutableDictionaryプロパティを宣言した私のプロジェクトで問題が持っていた:私はつもりですのでのiOS、NSMutableDictionary
@property (copy, nonatomic) NSMutableDictionary *DataDict ;
今すぐ実装ファイルでは、私が先に行くと、この辞書を初期化しますそのように、それを使用します。
DataDict = [[NSMutableDictionary alloc]init];
今、私はこれをしたとき、私はこの辞書に何かを追加しようとする分は、私はこのエラーメッセージになるだろう:
を- [__ NSDictionaryIのsetObject:forKey:]:51:56.040試験[2297:C07]未認識セレクタインスタンス0x885ae60 2012年10月19日16に送られたアプリを終了* キャッチされない例外により 'NSInvalidArgumentException' に、理由: 「 - [__ NSDictionaryI のsetObject:forKey:]:認識されていないセレクタがインスタンス0x885ae60に送られた」しばらくして、私のプロジェクトを通じて千回を実行している
、私はそうのように、私の初期の行のコメントを解除することを決め
//DataDict = [[NSMutableDictionary alloc]init];
とその問題を修正しました。
私の質問は:なぜですか?
ありがとう、私はそれらを読まなければなりません。 – Kalamantina
これは、リファレンスを強くし、initを割り当てるべきであるということですか?またはそれを強くしてinitを割り当てる必要はありませんか? – Kalamantina
それを「強くする」ことによって、そのオブジェクトとの強い関係(所有)を維持したいと言っているだけです(これは基本的に、所有者が割り当てを解除するときに割り当てを解除することを意味します)。あなたはまだオブジェクトをいつものようにalloc/initする必要があります。 – Alladinian