xcode – 如何重复可达性测试直到它工作
发布时间:2020-12-15 01:48:25 所属栏目:百科 来源:网络整理
导读:我有一个初始tableviewcontroller正在执行可达性检查.这在viewDidLoad中没有问题,但是我想知道重试连接的正确方法,直到它通过.我的实现文件中的相关代码如下所示,如果连接断开,我尝试插入[self ViewDidLoad],但这只是将应用程序设置为循环(返回连接失败NSLog
我有一个初始tableviewcontroller正在执行可达性检查.这在viewDidLoad中没有问题,但是我想知道重试连接的正确方法,直到它通过.我的实现文件中的相关代码如下所示,如果连接断开,我尝试插入[self ViewDidLoad],但这只是将应用程序设置为循环(返回连接失败NSLog消息)而不显示UIAlertView.
- (void)viewDidLoad { [super viewDidLoad]; if(![self connected]) { // not connected NSLog(@"The internet is down"); UIAlertView *connectionError = [[UIAlertView alloc] initWithTitle:@"Connection Error" message:@"There is no Internet Connection" delegate:self cancelButtonTitle:@"Retry" otherButtonTitles:nil,nil]; [connectionError show]; [self viewDidLoad]; } else { NSLog(@"Internet connection established"); UIButton *btn = [UIButton buttonWithType:UIButtonTypeInfoDark]; [btn addTarget:self action:@selector(infoButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn]; [self start]; } } 解决方法
你应该如何使用
Reachability?
>始终先尝试连接. 要接收通知,请注册通知,然后从Apple启动可访问性类: @implementation AppDelegate { Reachability *_reachability; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; _reachability = [Reachability reachabilityWithHostName: @"www.apple.com"]; [_reachability startNotifier]; // ... } @end 要回答通知: - (void) reachabilityChanged: (NSNotification *)notification { Reachability *reach = [notification object]; if( [reach isKindOfClass: [Reachability class]]) { } NetworkStatus status = [reach currentReachabilityStatus]; NSLog(@"change to %d",status); // 0=no network,1=wifi,2=wan } 如果您更喜欢使用块,请使用KSReachability. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |