【发布时间】:2012-05-27 12:20:51
【问题描述】:
假设我有一个BasicEngine 课程:
@interface BasicEngine : GfxEngine{
NSMutableDictionary *keyNodes;
AbstractVirtualJoystick *input0;
}
相关实现如下:
@implementation BasicEngine
- (id)init {
if ( (self = [super init]) ) {
keyNodes = [NSMutableDictionary dictionary];
}
return self;
}
我的理解是调用[ dictionary] 会返回一个自动释放的对象。但是,只要BasicEngine 实例可用,该字典就应该保存在内存中。
我意识到我错过了一些东西,因为keyNodes 很快变成了nil 对象。
在init 方法中使用[keyNodes retain] 会有所帮助,但我不明白为什么需要保留类成员。
请帮助我理解这一点:-) 谢谢。
【问题讨论】:
标签: objective-c memory-management retain autorelease