受け取ったメモリ警告を回避するために、navigationViewControllerにあるmainViewControllerのビューを解放する必要があります。
ビューをロードする良い方法は「loadview」メソッドですが、「self.view = nil」を実行してビューのロックを解除しようとすると(スタックの次のコントローラーに移動するとき)、「loadview」メソッドが再度呼び出されます。したがって、何も起こりません。
'viewWillAppear'メソッドでビューをロードするこの問題を解決しましたが、私の質問は次のとおりです。
その手順は正しいですか?そうでない場合(それが私が思うことです)、どうすればそのビューを解放してメモリを解放できますか?
それを行うための最良の(またはより正しい)方法はどれですか?
これはコードです:
ビューをロードせずに「loadView」
- (void)loadView
{
[super loadView];
(some more code)
}
ここに読み込まれるビュー
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (!pral)
{
pral = [[TouchDrawView alloc] initWithFrame:[UIScreen mainScreen].bounds];
[self setView:pral];
[pral release];
}
(some more code)
}
これは、スタックの次のviewControllerへの呼び出しです
- (void)menus:(id)sender
{
opcions *ops = [[opcions alloc] init];
[[self navigationController] pushViewController:ops animated:YES];
[ops release];
//Here I'm trying to free memory releasing the view
[pral removeFromSuperview];
pral = nil;
self.view = nil;
}
ありがとう