9
NSMutableDictionaryからオブジェクトを削除しようとすると、例外が発生します。関連するコードは次のとおりです。 「設定」はメソッドに渡され、NSDictionaryまたはNSMutableDictionaryになります。変更可能な辞書からオブジェクトを削除すると、例外がスローされます
NSMutableDictionary *mutableSettings = nil;
if ([settings isKindOfClass:[NSMutableDictionary class]])
mutableSettings = (NSMutableDictionary *)settings;
else
mutableSettings = [[[NSMutableDictionary alloc] initWithDictionary:settings] autorelease];
[mutableSettings removeObjectForKey:@"akey"];
これがキャッチされない例外により 'NSInternalInconsistencyException'、理由にアプリを終了*
でクラッシュ: ' - [__ NSCFDictionary removeObjectForKey:]:不変オブジェクトに送られた変異法'
何が問題ですか?ありがとう。
また、下線が示すように、 '__NSCFDictionary'はプライベートクラスです。それは必ずしも唯一の辞書クラスではなく、永遠に周りにいることは保証されていません。より関連して、それはNSMutableDictionaryのサブクラスなので、*すべての*辞書(それは '__NSCFDictionary'のインスタンスです)はNSMutableDictionaryの一種です。これらのすべては、辞書(または他のplistオブジェクト)が可変であるかどうかを確かめる方法がないことを意味します。 –