2

我有我存储的字典

1)keys = 这是具有“assign”属性的“SimpleObject”的字符串属性

--2) value = "SimpleObject"

NSMutableDictionary 保留对象,所以我释放对象。密钥存在于同一个对象中。关键是字符串。

现在我需要在将它添加到 dict 之前显式保留字符串键吗?

4

4 回答 4

3

不,您不需要显式保留NSString,因为您的对象已经这样做了。由于字典保留了对象,因此NSString不会被过早释放。

此外,NSDictionary 复制您的字符串 key,以防止使用可变对象作为字典键(这非常糟糕)。这就是为什么您可以随意更改对象内的那个键的原因。当然,这不会改变对象在字典中的位置。

于 2013-09-10T16:02:53.587 回答
0

答案是不。无论您是否使用 ARC。不。

于 2013-09-10T16:00:37.117 回答
0

不,您不需要保留NSDictionary. 这是因为NSDictionary复制密钥。当您检索对象时,objectForKey: isEqual:用于确定哪个键引用您传入的对象。

于 2013-09-10T16:01:25.853 回答
0

Cocoa 中手动内存管理的基本规则是——担心你在那个对象或方法中正在做什么;不要担心任何其他对象在做什么。

您所做的只是将密钥传递给字典的方法。不会将其存储在任何地方。无论字典用它做什么,它都负责正确的内存管理。它的作用与您无关。

(块有一个轻微的例外,因为有时您必须在传递给与类型无关的方法之前复制它们。但现在我们不要担心这个。)

于 2013-09-11T22:02:28.123 回答