3

ViewController.m ファイルのコードを使用して UILabel を更新しようとしています。

returnInfo.text = @"The website is up!";

ただし、この変更はアプリに最大数分間表示されませんが、表示されます。私は何を間違っていますか?また、表示されるまでに時間がかかるのはなぜですか? このコードが実行されるとすぐに、ラベルが視覚的に更新されるようにします。

これは、ViewController.m ファイル全体です: http://pste.co/p/mTvcgTftdr1a (40、45、51 行目)

4

1 に答える 1

1

私は本当に汚い(くだらない)解決策を持っています。それは、今より良い解決策を考えられないだけです。

解決策は次のとおりです。

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 ライフサイクルとスレッドについて読んでください:

汚いコードでもう1つ申し訳ありません。私はその答えに対していくつかのマイナスを取ることができます.明日はもっと良いものを考えます.

于 2013-10-29T23:47:57.260 に答える