Cam*_*oft 15 objective-c reachability ios4 ios
我是iOS开发的新手,我正在努力让reachability.h类工作.这是我的视图控制器代码:
- (void)viewWillAppear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(checkNetworkStatus:)
name:kReachabilityChangedNotification
object:nil];
internetReachable = [Reachability reachabilityForInternetConnection];
[internetReachable startNotifier];
}
- (void)checkNetworkStatus:(NSNotification *)notice {
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
NSLog(@"Network status: %i", internetStatus);
}
Run Code Online (Sandbox Code Playgroud)
它看起来不错,但在运行应用程序并切换到该视图时,xcode控制台中没有任何内容出现.
我正在使用Reachability 2.2和iOS 4.2.
有什么明显的东西我做错了吗?
knu*_*uku 55
编辑:如果你想在一些代码执行之前检查可达性,你应该使用
Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus internetStatus = [reachability currentReachabilityStatus];
if (internetStatus != NotReachable) {
//my web-dependent code
}
else {
//there-is-no-connection warning
}
Run Code Online (Sandbox Code Playgroud)
您还可以在某处(即in viewDidLoad)添加可达性观察器:
Reachability *reachabilityInfo;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(myReachabilityDidChangedMethod)
name:kReachabilityChangedNotification
object:reachabilityInfo];
Run Code Online (Sandbox Code Playgroud)
[[NSNotificationCenter defaultCenter] removeObserver:self];当您不再需要可达性检测时(即dealloc方法中),不要忘记打电话.
这是我如何做到的.我有一个我在init方法中设置的实例变量:
_reachability = [[APReachability reachabilityForInternetConnection] retain];
Run Code Online (Sandbox Code Playgroud)
当我需要查询网络状态时,我会:
NetworkStatus networkStatus = [_reachability currentReachabilityStatus];
if (networkStatus != NotReachable) {
// Network related code
}
else {
// No network code
}
Run Code Online (Sandbox Code Playgroud)
如果你关心wifi等,网络状态可以是:
NotReachable // No network
ReachableViaWiFi // Reachable via Wifi
ReachableViaWWAN // Reachable via cellular
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31624 次 |
| 最近记录: |