2012-05-18 8 views
9

agrego esta función para enviar una notificación cuando la aplicación entrar en primer plano:iOS applicationWillEnterForeground y stucked por un tiempo

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

En mi propia clase:

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


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

pero el handleEnterForeground: Función Se llamará dos veces, no sé por qué. La función reloadTableData: llamará a remote webService, de modo que cuando la aplicación ingrese en primer plano, se bloqueará durante un tiempo. Por favor, ayúdenme con esto, y gracias.

Respuesta

17

El sistema llamará a ese evento automáticamente. La razón por la que se dispara dos veces es porque lo disparas nuevamente manualmente.

P.S. Es mejor usar el nombre de variable UIApplicationWillEnterForeground, en lugar de un literal NSString.

EDIT: Me doy cuenta ahora que la confusión proviene del hecho de que no sabías que este nombre par ya estaba tomado. Como nota para otras personas que se encuentren con este tipo de problema, es una buena práctica agregar los nombres de los eventos al prefijo del proyecto (es decir, XYZEventNotification) para evitar colisiones.

+0

¿dónde está disparando dos veces? – cnu

+0

Estoy tan seguro de haber llamado a esa función una vez. – jxdwinter

+1

@cnu * he * lo está disparando una vez, y el tiempo de ejecución de iOS lo está disparando una vez. Este evento se llama automáticamente. – borrrden

Cuestiones relacionadas