1、注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityIsChanged:) name:kReachabilityChangedNotification object:nil];
2、创建Reachability实例对象并开启通知
struct sockaddr_in address;
memset(&address, 0, sizeof(address));
address.sin_len = sizeof(address);
address.sin_family = AF_INET;
address.sin_port = htonl(IP_PORT);
address.sin_addr.s_addr = htons(inet_addr(IP_Address));
reachability = [[Reachability reachabilityWithAddress:&address] retain];
[reachability startNotifier]; //开启网络检测
3、网络状态改变接受通知处理
-(void)reachabilityIsChanged:(NSNotification *)notify {
Reachability *curReach = [notify object];
NetworkStatus networkStatus = [curReach currentReachabilityStatus];
if (networkStatus == NotReachable) { //无网络状态
//TODO
} else { //有网络状态,3G或wifi
//TODO
}
}
4、关闭通知并释放对象
[[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
if (reachability) {
[reachability stopNotifier]; //关闭网络检测
[reachability release];
}