I have the following code:
NSDictionary *dict = @{ @"myKey" : @"myValue" };
我应该使用
release
还是autorelease
来释放dict
?
或者说我不拥有这个对象,所以我不应该自己释放它吗?注意:我使用手动引用计数(禁用 ARC)。
I have the following code:
NSDictionary *dict = @{ @"myKey" : @"myValue" };
release
还是autorelease
来释放dict
?
或者说我不拥有这个对象,所以我不应该自己释放它吗?NSDictionary
。 Clang文档指出,字典文字表达式扩展为+[NSDictionary dictionaryWithObjects:forKeys:count:]
,因此您不拥有该对象。alloc
或new
创建的对象才归您所有。我问问题太早了,抱歉。但这是答案:
由于找不到参考资料(也许是因为模糊的关键字@ { } ),所以我试图自己分析它。
当在由@{ @"myKey" : @"myValue" }
创建的字典中添加 autorelease
时,应用程序会崩溃。 我还通过Xcode的静态分析器运行了代码,并出现Memory问题。
因此,我们不需要释放使用@{}
检索的对象,类似于使用@""
的NSString
。
我还尝试了使用@[]
的NSArray
。 应用同样的行为适用。
我们不需要自己释放它们。