假设我有一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
对象。[keyNodes retain]
在方法中使用init
只是有帮助,但我不明白为什么需要保留类成员。
请帮助我理解这一点:-) 谢谢。