0

UINavigationControllerにプッシュしたいUIViewcontrollerがあります。これは、presentModalViewController:animatedを使用してモーダルビューにプッシュします。このコードで何が問題になっていますか?モーダルビューコントローラにnavControllerをロードしようとしています

は、ここに私のコードです:

コードが実行される
TargetViewController *targetViewController = [[[TargetViewController alloc] init] autorelease]; 
UINavigationController *targetNavController = [[[UINavigationController alloc] initWithRootViewController:targetViewController] autorelease]; 
[self presentModalViewController:targetNavController animated:YES]; 

、モーダルビュー負荷が予想されるように、しかしdismissModalViewControllerAnimated後:と呼ばれ、モーダルビューが滑落し、アプリがクラッシュします。

私は、GDBに次のエラーを取得: を - [CALayerの保持]:メッセージは、割り当て解除インスタンスへの質問の

最初の部分を送った:上記のコードで、本質的に何か問題はありますか?

2番目の部分:上記のコードに何も問題がなければ、次にデバッグする場所はどこですか?

追加情報:私はないリリースを行うかからNavControllerを自動解放 、それが正常に動作します。しかし、インストゥルメントは放棄されたメモリを表示しますが、これはnavControllerが解放されていないと仮定できます。多分モーダルビューコントローラ

P.S.私はクラッシュが上記のViewController、navController、およびモーダルビューのメモリ管理に関連していることを知っています。なぜなら、私のコードはこのコードを使いこなす前に動作していたからです。

答えて

0

は、問題を修正しました。私はVCを解放して、クラッシュを引き起こしました。入力いただきありがとうございます。

0

ナビゲーションコントローラーがルートコントローラーとして機能するため、通常はnavControllerをビューとしてプッシュしません。ビューはnavControllerからプッシュされます。ビューをプッシュしたら、次のビューをモーダルで表示することができます。

0

autoreleaseを使用しないとどうなりますか?

すなわち:

TargetViewController *targetViewController = [[TargetViewController alloc] init]; 
UINavigationController *targetNavController = [[UINavigationController alloc] initWithRootViewController:targetViewController]; 
[targetViewController release]; 
[self presentModalViewController:targetNavController animated:YES]; 
[targetNavController release]; 
+0

上記のコードを使用すると、targetViewControllerが期待どおりに読み込まれますが、閉じていると(dismissModalViewControllerAnimatedが呼び出されると)、アプリケーションがクラッシュし、投稿に含まれているエラーメッセージが表示されます。 –

+0

iOS SDK/Xcodeのバージョンはどちらですか? –