gpt4 book ai didi

cocoa - valueForKey 是否为 : NSMutableDictionary use copy for NSStrings?

转载 作者:行者123 更新时间:2023-12-03 17:37:46 25 4
gpt4 key购买 nike

我有一个带有十几个键的 NSMutableDictionary,每个键引用一个 NSString 值。如果我调用 [myDictionary valueForKey:@"abc"] 我将得到一个 NSString 对象。

这个NSString被复制了吗?

由于没有 @property 声明,因此检索字符串会发生什么情况?我想我会得到一份副本。与 NSMutableString 有什么不同吗?

我的目的是我有一个 NSDictionaries 数组。我在数组上调用 valueForKey 来从字典集合中获取所有 @"abc"键。因此我现在有一个 NSString 数组。

我需要将该数组传递给后台线程上的NSOperation。因此,NSStrings 需要是副本,以便稍后修改字典不会导致传递给 NSOperation 的字典发生更改。

最佳答案

来自-[NSDictionary valueForKey:]的文档:

If key does not start with “@”, invokes objectForKey:. If key does start with “@”, strips the “@” and invokes [super valueForKey:] with the rest of the key.

摘自-[NSMutableDictionary setObject:forKey:]的文档:

If aKey already exists in the dictionary, anObject takes its place.

valueForKey: 执行 objectForKey: 并且不复制对象。 setObject:forKey: 替换对象,但不修改对象。如果你这样做

[mutableDictionary setObject:@"klm" forKey:@"abc"];
a = [mutableDictionary valueForKey:@"abc"];
[mutableDictionary setObject:@"xyz" forKey:@"abc"];

现在a是旧值@"klm"

关于cocoa - valueForKey 是否为 : NSMutableDictionary use copy for NSStrings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50185546/

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