Ios 刷新UILabel

Ios 刷新UILabel,ios,objective-c,user-interface,uilabel,Ios,Objective C,User Interface,Uilabel,我正在尝试使用ViewController.m文件中的代码更新UILabel returnInfo.text = @"The website is up!"; 但这一变化在几分钟内不会出现在应用程序中,但它确实会出现。我做错了什么?为什么要花这么长时间才能出现?我希望标签在代码执行后立即进行可视化更新 这是我的整个ViewController.m文件: (第40、45、51行)我有一个非常糟糕的解决方案,只是我现在想不出更好的 下一个解决方案是: ViewController.h NSStri

我正在尝试使用ViewController.m文件中的代码更新UILabel

returnInfo.text = @"The website is up!";
但这一变化在几分钟内不会出现在应用程序中,但它确实会出现。我做错了什么?为什么要花这么长时间才能出现?我希望标签在代码执行后立即进行可视化更新

这是我的整个ViewController.m文件: (第40、45、51行)

我有一个非常糟糕的解决方案,只是我现在想不出更好的

下一个解决方案是:

ViewController.h

NSString *someData;
NSTimer *testTimer;
ViewController.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生命周期和线程的内容:


另一个对脏代码的抱歉。我可以接受这个答案的一些缺点,我明天会考虑更好的方法。

是否将标签添加到主可见视图?是否确定它正在主线程上运行?我想更新名为Connection的实例方法中的标签您是否在视图控制器中为
returnInfo
标签设置了出口?因为它看起来不像一个属性,并且在您的ViewController.m文件中,我看不到将变量
returnInfo
与实际标签连接在何处。它是使用从连接检查器拖动到标签的可视界面连接的(可能?)