Où dois-je effectuer un contrôle d'accessibilité?

Je veux vérifier une connection réseau valide. J'ai suivi l'exemple d'accessibilité d'Apple et j'ai mis mon chèque dans 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; } 

Cependant, mon application se bloque parfois avec l'erreur Application Failed to Launch in Time

J'ai posté mon crash en tant que question SO ici: L' application n'a pas pu être lancée dans le time

Je ne suis pas sûr où je devrais effectuer le contrôle d'accessibilité?

Dans -applicationDidBecomeActive vous pouvez appeler une méthode en arrièreplan qui utilise le code d'accessibilité avec -performSelectorInBackground:withObject:

Une vérification de l'accessibilité peut prendre beaucoup de time (30 secondes ou plus) selon les conditions du réseau. Mais si l'interface user de votre application ne répond pas pendant un certain nombre de secondes (beaucoup less de 30 secondes), le operating system suppose qu'il est mort et le tue.

Si vous effectuez votre vérification d'accessibilité dans un thread d'arrière-plan, et non dans le thread d'interface user, votre interface user restra réactive, et ni le operating system ni l'user ne supposeront que votre application s'est bloquée ou s'est bloquée.