簡単な質問ですが、簡単なものが欠けていることを願っています。わかりました。別のクラスへのポインタを保持するクラスがあります。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のrelease関数に戻ると、retaincountは6になります。非常に混乱。NormalGameClassのviewDidLoadの後の最初の行の[selfretainCount]は4です。ここで何が起こっているのか誰かが知っていますか?NormalGameClassでallocを呼び出すのは一度だけですが、それでも6まで保持されますか?不思議なことに、それを超えることはありません。洞察をありがとう。
更新:物事をいじっていて、これが厄介であることがわかりました。MainMenuClassで、NormalGameを取り除く方法は次のとおりです。
[self dismissModalViewControllerAnimated:NO];
m_NormalGame.delegate = nil;
[m_NormalGame release];
現在、この設定では、NormalGameのdeallocが呼び出されることはありません。ただし、上記の投稿の直後に[m_NormalGame release]を呼び出すと、NormalGameのdeallocが2回呼び出されます。=/混乱してペイントしてください。