gpt4 book ai didi

iphone - [[NSMutableDictionary alloc] initWithObjects :. ..] 和 [NSMutableDictionary DictionaryWithObjects :. ..] 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 16:23:05 26 4
gpt4 key购买 nike

仍在此处学习 Objective-C/iPhone SDK。我想我知道为什么这不起作用,但我只是想确认一下。

awakeFromNib中,如果我使用[[NSMutableDictionary alloc] initWithObjects:...],它实际上用这个NSMutableDictionary分配(iPhone)系统内存code> 数据,但是当我使用 [NSMutableDictionarydictionaryWithObjects:...] 它仅在堆栈中可用,对吗?

例如,将来如果我尝试通过 IBAction 按下按钮来访问 myMutableDict,则 myMutableDict 对象可能已被释放,导致我的应用程序崩溃,即使我在 .h 文件中像这样定义了它,并合成了它:

@property (nonatomic, retain) NSMutableDictionary *myMutableDict;

出于某种原因,更改为 [[NSMutableDictionary alloc] initWithObjects:...] 修复了此问题。

最佳答案

+dictionaryWithObjects: 返回一个自动释放的字典
-initWithObjects:你必须释放自己

如果您希望字典作为实例变量保留,您应该使用 init 方法创建它或保留自动释放版本,无论哪种方式,您都应该确保在 dealloc 方法中释放它

关于这个主题的一个优秀资源是 Memory Management Programming Guide for Cocoa .

关于iphone - [[NSMutableDictionary alloc] initWithObjects :. ..] 和 [NSMutableDictionary DictionaryWithObjects :. ..] 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1114713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com