2011-12-08 8 views
0

私のmainViewController内で別のViewControllerからビューを追加しています。私はそれが終わったときにそれを削除しています。これを管理する適切な方法とビューコントローラをどこから解放するのですか?自動レンダリングViewControllerメモリ管理

mainVc.m 
-(void)showView { 

    helpPage *elementController = [[helpPage alloc] init]; 
    [self.view addSubview:elementController.view]; 

} 

helpPage.m 
-(void)removeView { 

    [self.view removeFromSuperview]; 

} 

答えて

0

あなたがmainVcのそのインスタンスで、コントローラ上のallocのinitと呼ばれているので、mainVcのインスタンスは、コントローラを解放所有しています。

addSubViewを呼び出すと、ビューが保持され(ビュー階層に追加されます)、スーパービューから削除されると、そのビューは解放されます。その時点で、それがリリースされると、ビューを作成したコントローラはそれを保持しています。両方がその見解を発表すると、それはなくなるでしょう。

ここSOポスト関連です:私はあなたが確かにこの

mainVc.m 
-(void)showView { 

    helpPage *elementController = [[helpPage alloc] init]; 
    [self.view addSubview:elementController.view]; 
    [elementController release]; 

} 

helpPage.m 
-(void)removeView { 

    [self.view removeFromSuperview]; 

} 

のようなものを探しているように、私は、あなたのコードの残りの部分を見ていないと思います

Does UIView's addSubview really retain the view?

0

あなたが探しているものではないかもしれません。ただし、メモリ割り当てに関しては、alloc何時でも、後で解放する必要があります。ビューとビューコントローラの場合、一度そのビューまたはビューコントローラを追加すると、releaseのコピーを "allocした"ことができます。