即使完成任务,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];
});
我不确定为什么会发生这种情况,但是当我 运行 在 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];
});