2011-01-21 12 views
0

モーダルビューコントローラを解放する適切な方法を見つけようとしています。iPhone - modalViewControllerリリース

基本的には、ボタンを押した後にモーダルビュー(フルスクリーン)を表示するビューコントローラがあります。モーダルビューに続い

TipViewController * tipViewController = [[TipViewController alloc] init]; 
tipViewController.delegate = self; 
[self presentModalViewController:tipViewController animated:YES]; 

、私が呼び出しdissmissedすべきとき:

[self.delegate didDismissModalView]; 

最後に、親コントローラのdidDissmissModalView方法は以下の通りである:

- (void)didDismissModalView 
{ 
    // dismiss the modal view controller 
    [self dismissModalViewControllerAnimated:YES]; 
} 

(IはModalViewControllerDelegateプロトコルを使用このメソッドを実装する必要があります)。

- (void)dealloc 
{ 
    [tipViewController release]; 
} 

しかし、私は、モーダルビューコントローラが提示され、何度も解任することができるので、それは、間違った方法かもしれないことを、見た:

まず私は、親コントローラのdeallocメソッドでtipViewControllerを解放するべきであると考えました親コントローラが閉じられ、割り当てられるたびに最終的に一度だけ解放されるたびに実行されます。

多分私はそれを提示した直後にtipViewControllerをリリースする必要がありますか?

TipViewController * tipViewController = [[TipViewController alloc] init]; 
tipViewController.delegate = self; 
[self presentModalViewController:tipViewController animated:YES]; 
[tipViewController release]; 

モーダルビューが表示されますが、これを行うことはできますか?

それとも私は、モーダルビューをそのように解放する必要があります。

- (void)didDismissModalView 
{ 
// dismiss the modal view controller 
    [self dismissModalViewControllerAnimated:YES]; 
    [self.modalViewController release]; 
} 

はself.modalViewControllerが今tipViewControllerと同じであると仮定すると?

答えて

5

あなたがpresentModalViewControllerを呼び出した後、あなたはtipViewControllerを解放する必要があります

TipViewController * tipViewController = [[TipViewController alloc] init]; 
tipViewController.delegate = self; 
[self presentModalViewController:tipViewController animated:YES]; 
[tipViewController release]; 
+0

をあなたは右、もちろんです。私は他のいくつかの誤りによって誤解されました。 – Marcin