我想检查有效的网络连接。我按照Apple的Reachability示例,将我的支票放入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;
}
但是,我的应用有时会因错误Application Failed to Launch in Time
我在这里发布了我的崩溃问题:Application Failed to Launch in Time
我不确定应该在哪里执行可达性检查?
答案 0 :(得分:3)
可达性检查可能需要很长时间(30秒或更长时间),具体取决于网络状况。但是如果你的应用程序的用户界面没有响应几秒钟(远小于30秒),操作系统会认为它已经死了并将其杀死。
如果您在后台线程中进行可访问性检查,而不是UI线程,那么您的UI将保持响应,操作系统和用户都不会认为您的应用已被锁定或崩溃。
答案 1 :(得分:0)
在-applicationDidBecomeActive
中,您可以在后台调用方法 ,该方法将可访问性代码与-performSelectorInBackground:withObject:
一起使用。