案發現場:
用下面的網絡監聽失敗了: status老是0。鬱悶了。
//處理連接改變後的情況
- (void) updateInterfaceWithReachability: (Reachability*) curReach
{
//對連接改變做出響應的處理動作。
printf("ddddd %d\n", status);
self.status = [curReach currentReachabilityStatus];
printf("ddddd %d\n", status);
}
// 連接改變
- (void) reachabilityChanged: (NSNotification* )note
{
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
[self updateInterfaceWithReachability: curReach];
}
- (void) startNotificationCenter {
//開啓網絡狀況的監聽
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name: kReachabilityChangedNotification
object: nil];
Reachability *hostReach = [Reachability reachabilityWithHostName:@"http://www.manmanzou.com/m"];//可以以多種形式初始化
[hostReach startNotifier]; //開始監聽,會啓動一個run loop
[self updateInterfaceWithReachability: hostReach];
}
原因已經找到:
Reachability *hostReach = [Reachability reachabilityWithHostName:@"http://www.manmanzou.com/m"];//可以以多種形式初始化
由於iSO5引進新特新:
Automatic Reference Counting
內存的自動管理。這裏的局部變量,在該最用範圍內被自動釋放。判斷網絡的核心方法是:
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
hostReach = [Reachability reachabilityWithHostName: MANMANZOU_SITE];
[hostReach startNotifier];
其中hostReach必須能hold住。