私はインストゥルメントツールを使用しましたが、メモリリークはありません。しかし、私はその背後にある論理に苦労しています。なぜこれは漏れないでしょうか?私のAppDelegateは割り当てられたnavControllerを使ってself.navigationControllerのプロパティを設定しています。私のここでの初期化がなければ、私の財産はゼロです。 デリゲートのこれらのインスタンス変数を作成し、deallocでそれらを解放する必要はありませんか?なぜこれは漏れではないのですか?あるいは私はインストゥルメントツールを間違って使っていますかnavigationController and leaking
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// two alloc calls which would imply I need a release
UINavigationController *navController = [[UINavigationController alloc] init];
UIViewController *calcController = [[CalculatorViewController alloc] init];
[navController pushViewController:calcController animated:YES];
[window addSubview:navController.view];
[window makeKeyAndVisible];
// can not release here, if i do, no views show up
// [navController release];
// [calcController release];
return YES;
}
...
// NOTE: No dealloc for navController or calcController
- (void)dealloc {
[window release];
[super dealloc];
}
意味があります。 navControllerで何が起こっているのですか?それは魔法のようにself.navigationControllerプロパティにアタッチされていますか?インスタンス変数にすると、コードはよりセクシーになるでしょうか?または、あなたが言うように、それは問題ではありません。 – vesselhead
はい、次の行のためです: '[window addSubview:navController.view];'(ウィンドウによって)そのビューが保持されているので、コントローラは保持されます。 – PengOne
この場合、コントローラとnavControllerの両方と、calcControllerのビューがあります。皆さんは非常に迅速に対応しています。これ大好き。 – vesselhead