[英]Reachability and notificationcenter
我需要我的应用程序不断监听可访问reachability
更改并根据network status
更新我的视图,我正在考虑使用notificationcenter
,让我的所有视图都听取更改,但我不知道如何实现它。
我知道如何使用notificationcenter
和Reachability
但我似乎无法找到实现Reachability check
的地方。
我应该在哪里检查网络更改,并通知其他ViewControllers
?
我不认为AppDelegate
是正确的地方,如果我将Reachability
检查放在ViewController中,只要ViewController
处于“活动状态”,就会执行网络检查。
创建“单身” Reachability
并在应用启动时初始化它。
让单例定期检查可达性,例如使用NSTimer
。 然后,它可以通知在NSNotificationCenter
中注册的任何其他活动视图。
// AppDelegate.m:
@property (nonatomic, strong) Reachability *reachability;
// in applicationDidFinishLaunching...
self.reachability = [[Reachability alloc] init];
和
// Reachability.m
-(id)init {
self = [super init];
if (self) {
[self setupTheTimer];
}
return self;
}
我将创建一个处理所有网络检查的单例NSObject
类。
将其命名为NetworkChecker。
使用如下方法创建回调委托,如NetworkCheckerDelegate
:
@protocol NetworkCheckerDelegate <NSObject>
-(void)networkStatusUpdated:(NSInteger)networkStatus;
@end
@interface NetworkChecker : NSObject
{
id<NetworkCheckerDelegate> networkDelegate;
}
添加一个方法来启动网络检查并向其添加委托,如:
+(void)updateNetworkWithDelegate:(id<NetworkCheckerDelegate>)delegate
{
networkDelegate = delegate;
//Set timer to do Reachability checks
}
-(void)timerIsCompleted
{
//Do Reachability check
if( newNetworkState != oldNetworkState ){
[networkDelegate networkStatusUpdated:newNetworkState];
}
}
然后在每个ViewController
你需要它可以做(在viewDidLoad中执行此操作):
[NetworkChecker updateNetworkWithDelegate:self];
并在网络状态发生变化后执行以下操作:
-(void)networkStatusUpdated:(NSInteger)networkStatus
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.