9

アプリがフォアグラウンドに入ったときに通知を投稿するために、この関数を追加します。

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [[NSNotificationCenter defaultCenter] postNotificationName: @"UIApplicationWillEnterForegroundNotification" object: nil];
}

私自身のクラスでは:

- (void) handleEnterForeground: (NSNotification*) sender
{
    [self reloadTableData];
}


- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(handleEnterForeground:)
                                             name: @"UIApplicationWillEnterForegroundNotification"
                                           object: nil];
}

しかし、handleEnterForeground:関数は2回呼び出されます。理由はわかりません。reloadTableData:関数はリモートwebServiceを呼び出すため、アプリがフォアグラウンドに入ると、しばらくの間スタックします。

4

1 に答える 1

17

システムはそのイベントを自動的に呼び出します。2回起動するのは、手動で再度起動するためです。

PS NSStringリテラルの代わりに、変数名UIApplicationWillEnterForegroundを使用することをお勧めします。

編集:私は今、あなたがこの名前さえすでに使われていることを知らなかったという事実から混乱が生じていることに気づきました。この種の問題に遭遇した他の人々へのメモとして、衝突を避けるために、イベント名にプロジェクトプレフィックス(つまりXYZEventNotification)をプレフィックスとして付けることをお勧めします。

于 2012-05-18T07:33:21.130 に答える