[英]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.