我正在尝试使用 ViewController.m 文件中的代码更新 UILabel。
returnInfo.text = @"The website is up!";
但这种变化不会出现在应用程序中长达几分钟,但它确实出现了。我做错了什么,为什么要花这么长时间才能出现?我希望标签在此代码执行后立即更新。
这是我的整个 ViewController.m 文件: http://pste.co/p/mTvcgTftdr1a (第 40、45、51 行)
我正在尝试使用 ViewController.m 文件中的代码更新 UILabel。
returnInfo.text = @"The website is up!";
但这种变化不会出现在应用程序中长达几分钟,但它确实出现了。我做错了什么,为什么要花这么长时间才能出现?我希望标签在此代码执行后立即更新。
这是我的整个 ViewController.m 文件: http://pste.co/p/mTvcgTftdr1a (第 40、45、51 行)
我有一个非常肮脏(蹩脚)的解决方案,只是我现在想不出更好的解决方案。
接下来是解决方案:
视图控制器.h
NSString *someData;
NSTimer *testTimer;
视图控制器.m
-(void)tempMethod{
if (([someData rangeOfString:@"\"status_code\": 1"].location == NSNotFound) &&
([someData rangeOfString:@"\"status_code\": 2"].location == NSNotFound)) {
returnInfo.text = @"This URL looks invalid";
NSLog(@"Status Code 3");
} else if (([someData rangeOfString:@"\"status_code\": 2"].location == NSNotFound) &&
([someData rangeOfString:@"\"status_code\": 3"].location == NSNotFound)) {
returnInfo.text = @"The website appears to be up!";
[returnInfo setNeedsDisplay];
NSLog(@"Status Code 1");
} else if (([someData rangeOfString:@"\"status_code\": 3"].location == NSNotFound) &&
([someData rangeOfString:@"\"status_code\": 1"].location == NSNotFound)) {
NSLog(@"Status Code 2");
returnInfo.text = @"This website is down";
}
}
- (IBAction)connection:(UIButton *)sender{
NSString *url= @"http://isitup.org/duckduckgo.com.json";
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:[NSURL URLWithString:url]
completionHandler:^(NSData *data,
NSURLResponse *response,
NSError *error) {
someData = [NSString stringWithUTF8String:[data bytes]];
NSLog(@"%@",someData);
}] resume];
testTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(tempMethod) userInfo:nil repeats:YES];
}
接下来是我给你的建议:阅读 UIViewController 生命周期和线程:
另一个对脏代码感到抱歉。我可以为这个答案采取一些缺点,明天我会考虑更好的。