2012-05-18 7 views
9

私はアプリがフォアグラウンドに入るときに通知を掲示するために、この機能を追加するためのstucked:私自身のクラスでのiOSアプリapplicationWillEnterForeground、それしばらく

- (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:機能二度呼ばれる、私はなぜ知りません。 reloadTableData:関数はリモートWebServiceを呼び出します。そのため、アプリケーションが フォアグラウンドを入力すると、しばらくの間突っ込んでしまいます.Plsがこれを手伝ってくれてありがとう。

答えて

17

システムは自動的にそのイベントを呼び出します。 2回発射されるのは、手動で再度発射するからです。

P.S. NSStringリテラルではなく、変数名UIApplicationWillEnterForegroundを使用する方が良いでしょう。

EDIT:この偶数の名前が既に使用されていることをあなたが知らなかったという事実から、混乱が起こっていることを、今私は理解しています。このような問題に遭遇した他の人には、衝突を避けるためにイベント名の前にプレフィックス(つまり、XYZEventNotification)を付けることをお勧めします。

+0

彼はどこで2回発砲していますか? – cnu

+0

私はその機能を一度呼びました。 – jxdwinter

+1

@cnu * he *は一度発射し、iOSランタイムは一度発射しています。このイベントは自動的に呼び出されます。 – borrrden

関連する問題