3

プログラミング中にふと思ったこと。childViewController のインスタンスを作成する rootViewController を取得しました。この childVC は、別の childViewController (childVC2 など) から [self.navigationController pushViewController:childVC] を介して rootViewController にプッシュされます。ここで、childVC2 のインスタンスがどうなるか疑問に思っていました。リリースされますか?childVC から childVC2 に戻るときに、childVC2 の新しいインスタンスを作成し、それを rootViewController にプッシュするためです。明らかに、私は childVC2 の以前のインスタンスを使用していないので、それで何が起こるか、手動で解放できますか?

4

1 に答える 1

1

はい、ViewControllerを割り当てている場合は、それを解放する必要があります..プッシュにより参照カウントが1増加するため、参照カウントを減らすためにポップしていることを確認する必要があります..インスタンスを作成するには、それを定義します.h そしてそれを作成するときは、このようにします

if(yourViewController)
  [yourViewContoller release];

yourViewController = [yourViewControllerClass alloc] init];

別のオプションは、自動解放することです。この場合、ViewController を解放する責任はありません。

yourViewController = [yourViewControllerClass alloc] init]autorelease];
于 2012-04-05T15:16:37.890 に答える