1

我不确定为什么会发生这种情况,但是当我在使用 BFTASK 的 AWS 上运行查询时,其中的一个方法直到 BFTASK 处理程序完成很久之后才会完成。NSLog 在正确的时间打印在控制台中,但更改 UILabel 状态的代码直到很久之后才应用。

例如,我有

    [[dynamoDBObjectMapper query:[UsernameDB class] expression:queryExpression] continueWithBlock:^id(BFTask *task) {

        if (task.error) {

            NSLog(@"Error: [%@]", task.error);

            });

        } else {

//Other code
            if(x  > 0){

                [self notAvailable];

            } else{
                [self available];

            }

        }

哪个电话

-(void)available{

    NSLog(@"Username Available");
    self.availabilityLabel.text = @"Available";
    self.availabilityLabel.textColor = [UIColor greenColor];

}

现在让我感到困惑的是,NSLOG在正确的时间打印在控制台中,但是 UILabel 中的更改直到调用该方法很久之后才应用。

4

1 回答 1

3

确保标签在 UI 线程(主线程)上更新。将它们包装在对主线程的调度异步调用中。

dispatch_async(dispatch_get_main_queue(), ^{
   self.availabilityLabel.text = @"Available";
   self.availabilityLabel.textColor = [UIColor greenColor];
});
于 2015-04-04T08:49:57.833 回答