我有词典,其中存储
1)keys =这是具有'assign'属性的“SimpleObject”的字符串属性
- 2)value =“SimpleObject”
NSMutableDictionary保留对象,以便释放对象。密钥存在于同一对象中。关键是字符串。
现在我需要在将它添加到dict之前显式保留字符串键吗?
答案 0 :(得分:2)
不,您不需要明确保留NSString
,因为您的对象已经这样做了。由于字典保留了对象,NSString
不会过早被释放。
此外,NSDictionary
makes a copy of your string key,作为防止使用可变对象作为字典键(非常糟糕)的预防措施。这就是为什么你可以随意在对象内部更改密钥的原因。当然,这不会改变对象在字典中的位置。
答案 1 :(得分:0)
答案是否定的。您是否使用ARC。否。
答案 2 :(得分:0)
不,您不需要保留NSDictionary
的密钥(或值)。这是因为NSDictionary
复制了密钥。检索具有objectForKey:
isEqual:
的对象时,用于确定哪个键引用您传入的对象。
答案 3 :(得分:0)
Cocoa手动内存管理的基本规则是 - 担心你在该对象或方法中做了什么;不要担心其他任何对象在做什么。
您所做的只是将密钥传递给字典的方法。 您并未将其存储在任何地方。无论字典对它做什么,它都负责正确的内存管理。它的作用与您无关。
(块有一个小例外,因为有时你必须在传递给类型无关的方法之前复制它们。但是现在让我们不要担心这个。)