快速提问,希望我只是缺少一些简单的东西。好的,我有一个类拥有指向另一个的指针;MainMenuClass 和 NormalGameClass。在 MainMenuClass 内部,我执行以下操作。
m_NormalGame = [[NormalGameMode alloc] initWithNibName:@"NormalGameMode" bundle:[NSBundle mainBundle]];
m_NormalGame.delegate = self;
[self presentModalViewController:m_NormalGame animated:YES];
现在,每当没有调用 NormalGameClass 的 dealloc 函数时,我首先注意到一个问题,因此我进行了一些 retainCount 调用,并且由于某种原因,一旦它返回 MainMenu 中的释放函数,它的保留计数为 6。进一步挖掘让我很困惑。NormalGameClass 中 viewDidLoad 之后的第一行,它的 [self retainCount] 是 4。有人知道这里会发生什么吗?我只在 NormalGameClass 上调用过一次 alloc,但它被保留到 6 个?奇怪的是,从来没有过去。感谢您的任何见解。
更新:正在摆弄东西,发现这很尴尬。在 MainMenuClass 中,这是我摆脱 NormalGame 的方法。
[self dismissModalViewControllerAnimated:NO];
m_NormalGame.delegate = nil;
[m_NormalGame release];
现在,通过这个设置,NormalGame 的 dealloc 永远不会被调用。但是,如果我在上面发布的那个之后立即调用 [m_NormalGame release],它会调用 NormalGame 的 dealloc ...两次。=/把我画得一头雾水。