gpt4 book ai didi

objective-c - 返回不可变对象(immutable对象)的首选方式

转载 作者:太空狗 更新时间:2023-10-30 03:26:40 25 4
gpt4 key购买 nike

如果我有一个看起来像这样的方法:

- (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 实际上会返回一个伪装成 NSDictionaryNSMutableDictionary

最佳答案

返回选项 1 将创建一个不可变的 NSDictionary 对象,如果您不希望以任何方式对其进行编辑,这是可行的方法。

返回选项 2 无论如何都会返回一个 NSMutableDictionary。将其转换为 NSDictionary 不会有任何区别

但是:调用此方法时,您会看到它返回一个 NSDictionary,因此您必须在外部考虑它,因此除非您检查对象类然后将其转换为NSMutableDictionary 在你的方法之外,它在外面看起来是不可变的。

关于objective-c - 返回不可变对象(immutable对象)的首选方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13972902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com