2012-05-18 7 views
9

ich diese Funktion hinzufügen, eine Benachrichtigung zu senden, wenn die App Vordergrund eingeben:iOS-App applicationWillEnterForeground und es für eine Weile stucked

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

In meiner eigenen Klasse:

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


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

aber der handleEnterForeground: function werde zweimal angerufen, ich weiß nicht warum. Die reloadTableData: Funktion wird Remote WebService aufrufen, wenn die App Vordergrund eingeben, wird es für eine Weile stecken bleiben.Pls mir dabei helfen, und danke.

Antwort

17

Das System ruft dieses Ereignis automatisch auf. Der Grund, warum es zweimal ausgelöst wird, ist, dass Sie es manuell erneut auslösen.

P.S. Es ist besser, den Variablennamen UIApplicationWillEnterForeground anstelle eines NSString-Literals zu verwenden.

EDIT: Ich realisiere jetzt die Verwirrung kommt von der Tatsache, dass Sie nicht wussten, dass dieser gerade Name bereits genommen wurde. Als eine Anmerkung für andere Leute, die auf diese Art von Problem stoßen, ist es eine gute Praxis, Ihren Ereignisnamen mit Ihrem Projektpräfix (d. H. XYZEventNotification) voranzukommen, um Kollisionen zu vermeiden.

+0

Wo ist er zweimal feuern? – cnu

+0

Ich bin mir sicher, dass ich diese Funktion einmal aufgerufen habe. – jxdwinter

+1

@cnu * er * feuert es einmal, und iOS-Laufzeit wird es einmal ausgelöst. Dieses Ereignis wird automatisch aufgerufen. – borrrden

Verwandte Themen