即使完成任务,BFTASK 中的方法也会延迟

Method within BFTASK getting delayed even with completion of task

我不确定为什么会发生这种情况,但是当我 运行 在 AWS 上使用 BFTASK 的查询时,其中的一个方法在 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 中的更改直到调用该方法很久之后才应用。

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

dispatch_async(dispatch_get_main_queue(), ^{
   self.availabilityLabel.text = @"Available";
   self.availabilityLabel.textColor = [UIColor greenColor];
});