私は次のコードがあります:私はNSDictionary
かNSMutableDictionary
のいずれかであるオブジェクトを持っている場合は、私が言うことができるか、だから(私はむしろ避けたい)tryブロックの短いiOS - NSDictionaryとNSMutableDictionaryを区別する
NSString* value = @"value";
NSString* key = @"key";
NSMutableDictionary* foo = [NSMutableDictionary dictionary];
NSDictionary* bar = [NSDictionary dictionary];
NSAssert([bar isKindOfClass: [NSMutableDictionary class]], @""); // passes the assert as both are NSCFDictionary;
NSAssert([bar respondsToSelector: @selector(setValue:forKey:)], @""); // passes the assert because it NSCFDictionary does respond to the selector
[foo setValue:value forKey:key]; // no problem, foo is mutable
[bar setValue:value forKey:key]; // crash
を差?
-setObject:forKey :, -setValue:forKey:を使用しないことをお勧めします。 –
辞書を持っていて、それが可変であるかどうかわからないという現実的な例がありますか? – bneely
[bar respondsToSelector:@selector(setValue:forKey :)]が機能しないことを追加したかっただけです。 – picciano