我使用的是open source Reachability.但是我没有使用块而是通知,因此该过程非常类似于Apple的Reachability代码.
我第一次启动应用程序,运行它,它运行良好.
Reachability *reachability = [reach hostReachability];[reachability startNotifIEr];
reachabilityChanged:事件正在触发:
[[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(reachability_Changed:) name:kReachabilityChangednotification object:nil];
但是,一旦我按下主页按钮并返回应用程序,startNotifIEr会在内部返回NO而不是YES.
// Set it as our reachability queue,which will retain the queue if(!SCNetworkReachabilitySetdispatchQueue(self.reachabilityRef,self.reachabilitySerialQueue)) {#ifdef DEBUG NSLog(@"SCNetworkReachabilitySetdispatchQueue() Failed: %s",SCErrorString(SCError()));#endif ... return NO;
因此上面的事件再也不会被解雇了.
除非我错误地使用了这个并且startNotifIEr应该只在init中调用一次,当实例化可达性时再也不会?
self.hostReachability = [Reachability reachabilityWithHostname:_HOST];解决方法 你应该只需要在init / load上调用[self.hostReachability startNotifIEr]一次.以下是基本需求的概述,使用通知而不是链接线程上的块方法:
>将tonymillion/Reachability库添加到项目中.
>为您的Reachability对象创建属性以确保它被保留,例如.
@interface VIEwController () { Nsstring *_HOST;}@property Reachability *hostReachability;@end
>注册更改通知,并启动通知程序,例如.
- (voID)vIEwDIDLoad{ [super vIEwDIDLoad]; [[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangednotification object:nil]; _HOST = @"www.Google.com"; self.hostReachability = [Reachability reachabilityWithHostname:_HOST]; [self.hostReachability startNotifIEr];}- (voID)vIEwDIDUnload{ [super vIEwDIDUnload]; [[NSNotificationCenter defaultCenter] removeObserver:self];}
>最后,创建一个reachabilityChanged:方法来处理您对Reachability更改的响应,例如.
- (voID)reachabilityChanged:(NSNotification*)notification{ Reachability *notifIEr = [notification object]; NSLog(@"%@",[notifIEr currentReachabilityString]);}
注意:如果您按“主页”按钮并卸载应用程序,则“可达性”中的更改应在返回应用程序后立即触发通知.
总结以上是内存溢出为你收集整理的iOS:可达性 – 返回应用后startNotifier失败全部内容,希望文章能够帮你解决iOS:可达性 – 返回应用后startNotifier失败所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)