仍在学习 Objective-C / iPhone SDK 。我想我知道为什么这不起作用,但我只是想确认一下。
In awakeFromNib
,如果我使用[[NSMutableDictionary alloc] initWithObjects:...]
它实际上用这个分配(iPhone)系统内存NSMutableDictionary
数据,但是当我使用[NSMutableDictionary dictionaryWithObjects:...]
它只能在堆栈中使用,对吗?
例如,将来如果我尝试访问myMutableDict
通过 IBAction 按下按钮,myMutableDict
对象可能已被释放,导致我的应用程序崩溃,即使我在 .h 文件中像这样定义了它并合成了它:
@property (nonatomic, retain) NSMutableDictionary *myMutableDict;
由于某种原因更改为[[NSMutableDictionary alloc] initWithObjects:...]
解决了这个问题。
+dictionaryWithObjects:
返回一个自动释放的字典
-initWithObjects:
你必须释放自己
如果您希望字典作为实例变量持久存在,您应该使用 init 方法创建它或保留自动释放版本,无论哪种方式,您都应该确保在 dealloc 方法中释放它
关于这个主题的一个很好的资源是Cocoa 内存管理编程指南 http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)