如果我有一个类似以下的方法:
- (NSDictionary *)removeDataInDictionary:(NSDictionary *)dictionary {
NSMutableDictionary *mutableDictionary = [dictionary mutableCopy];
[mutableDictionary removeObjectForKey:@"key"];
// Return option 1
return [NSDictionary dictionaryWithDictionary:mutableDictionary];
// Return option 2
return (NSDictionary *) mutableDictionary;
}
选择1代码上是否更好,因为它将真正返回一个NSDictionary
而选项2实际上会返回一个伪装成NSDictionary
的NSMutableDictionary
?
mutableDictionary
的生命周期仅限于您的方法,但通常最好返回一个不可变的副本。还请注意,您可以使用[mutableDictionary copy]
,这与选项1相同。 - Guillaumecopy
始终返回一个不可变类型,而mutableCopy
返回一个可变类型。 - Guillaume