0

シミュレーターを介して iOS バージョンのメモリ警告をシミュレートするときにviewDidUnload、xib を使用せずに alloc/init を使用して初期化すると、メソッドが呼び出されないのはなぜですか? ViewControllerこのメソッドは呼び出されないようです。

xib ファイルを使用して alloc/initWithNibName 経由でコントローラーを作成すると、viewDidUnload メソッドが正常に呼び出されました。なぜそれが起こったのですか?すべてのviewcontrollersがメモリ警告を正常に処理するには、xibファイルが必要ですか?

4

3 に答える 3

0

私は私の問題を解決します。xib を使用しない私の実装では、次のコードを追加するだけです。

- (void) loadView {
   UIView * myView = [[[UIView alloc] init] autorelease];
   self.view = myView;
}
于 2012-06-15T13:29:46.477 に答える
0

viewDidUnloadメモリ警告が受信されるたびに呼び出されUINavigationController、新しいView Controllerをプッシュし、このView Controllerがメモリ不足を引き起こした場合 など、表示されていないビューを持つ各View Controllerに対して呼び出されviewDidUnloadます(そのビューのため)見えません)

また、 を実装didReceiveMemoryWarningして呼び出さない場合、 は呼び出されないことに注意して[super didReceiveMemoryWarning];ください。viewDidUnload

たとえば、View Controllerにこれがある場合

- (void)didReceiveMemoryWarning
{
    //with 
    [super didReceiveMemoryWarning]; // viewDidUnload gets called

    //without [super didReceiveMemoryWarning]; viewDidUnload does not get called
}
于 2012-06-15T12:16:34.900 に答える
0

ベータ プログラムの条件に制約されているため、iOS 6 ベータについて詳細に議論することはできないと思いますが、8 ページの iOS 6 ベータ 1 リリースの 6 ページの下部を確認することをお勧めします。 viewWillUnload と viewDidUnLoad に関する注意事項。

于 2012-06-16T20:03:00.203 に答える