0

マルチタスクの変更のために appDelegate メソッドを処理する最善の方法を見つけようとしています。ユーザーが考えられる行動を検討したいと思います。

ビュー コントローラーのメソッドで ivar の初期化とビューのセットアップが多数行われている場合はどうなりますか。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

そして、この方法が途中である間に、ユーザーはアプリを終了します。しかし、マルチタスクをサポートしているため、再度開いたときに、上記の init メソッドは中断したところから続行するのでしょうか?

viewDidLoadもしそうなら、これが、実行中にアプリを終了すると、アプリを実行して中断したところから再開されないviewDidLoadように見えるため、上記の方法ではなく、上記の方法で初期化を配置する方が良い理由ですか?また。viewDidLoad

4

1 に答える 1

1

アプリがバックグラウンドに移行するという事実を意味する場合、メソッド- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNilは実行を終了します。

たとえば、そのメソッドに次を追加してから、ボタンを押してアプリをバックグラウンドにします。

    for (int a=0 ; a< 50000; a++) {
      NSLog(@"t");
    }

アプリをバックグラウンドに送信した後も、ログが継続していることがわかります。

2番目の質問に答えるには... initで初期化を行う必要があります。これは、オブジェクトがライブで最初に1回だけ呼び出されるという確実性があるためです。もちろん、いくつかのオブジェクトを破棄したviewDidUnload場合は、viewDidLoad でそれらを再作成する必要があります。SOそれは毎回、ivarの値をどれだけ長く使用したいかによって異なります。たとえば、この SO の質問を参照してください: viewDidUnload で正確に何をする必要がありますか?

于 2012-04-23T15:00:30.323 に答える