IOS:我需要保留字典ios中的密钥吗?

时间:2013-09-10 15:57:13

标签: ios objective-c release nsmutabledictionary retain

我有词典,其中存储

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

- 2)value =“SimpleObject”

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

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

4 个答案:

答案 0 :(得分:2)

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

此外,NSDictionary makes a copy of your string key,作为防止使用可变对象作为字典键(非常糟糕)的预防措施。这就是为什么你可以随意在对象内部更改密钥的原因。当然,这不会改变对象在字典中的位置。

答案 1 :(得分:0)

答案是否定的。您是否使用ARC。否。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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