¿Dónde debo realizar una verificación de scope?

Quiero verificar si hay una connection de networking válida. Seguí el ejemplo de Reachability de Apple y puse mi cheque en applicationDidFinishLaunching

 #pragma mark - #pragma mark Application lifecycle - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")) { NSLog(@"NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!"); } // Override point for customization after application launch. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; //Check for connectivity internetReach = [[Reachability reachabilityForInternetConnection] retain]; [internetReach startNotifer]; [self updateInterfaceWithReachability: internetReach]; [window addSubview:navigationController.view]; [window makeKeyAndVisible]; return YES; } 

Sin embargo, mi aplicación se bloqueará a veces con el error La Application Failed to Launch in Time

He publicado mi locking como una pregunta SO aquí: La aplicación no se pudo iniciar a time

No estoy seguro de dónde debo realizar el control de accesibilidad.

En la aplicación -applicationDidBecomeActive puede llamar a un método en segundo plano que utiliza el código de accesibilidad con -performSelectorInBackground:withObject:

Una verificación de scope puede tomar una cantidad significativa de time (30 segundos o más) dependiendo de las condiciones de la networking. Pero si la interfaz de usuario de la aplicación no responde por algunos segundos (mucho less de 30), el SO asume que está muerto y lo mata.

Si realiza su verificación de accesibilidad en un subprocess de background, no en el subprocess de interfaz de usuario, su interfaz de usuario permanecerá receptiva, y ni el sistema operativo ni el usuario asumirán que su aplicación se haya bloqueado o bloqueado.