你在哪里打电话给Reachability?

bmu*_*ler 5 objective-c reachability ios

我正在尝试在我的应用中实现Reachability.我有它applicationDidFinishLaunching.如果我的连接非常糟糕并且我启动了应用程序,则Reachability需要永远,并且经常会因The application failed to launch in time错误消息而崩溃应用程序.

所以相反,我尝试在后台线程中调用Reachability.但是当我这样做时,我不再收到Reachability通知.

我应该在哪里打电话给Reachability?

编辑:

我根据下面的建议添加了TonyMillions的Reachability代码,但是application failed to load in time在非常糟糕的网络条件下我仍然会遇到相同的错误.要重现我所看到的内容,请转到Settings.app - > Developer - > Network Link Conditioner,将其打开并将其设置为100%丢失.

您的应用仍然在这种情况下加载吗?

bmu*_*ler 0

TonyMillion 帮助我在GitHub上解决了这个问题。

如果您正在使用他的 Reachability 替代品,您所要做的就是startNotifier像这样包装调用:

dispatch_async(dispatch_get_global_queue(0,0), ^{
    [self.internetReach startNotifier];
});
Run Code Online (Sandbox Code Playgroud)

该应用程序不会在网络条件不好的情况下启动失败,并且您仍然会在主线程上收到通知。