2015-04-04 63 views
1

我不知道爲什麼會發生這種情況,但是當我在使用BFTASK的AWS上運行查詢時,它內部的方法直到BFTASK處理程序完成後才完成。 NSLog將在正確的時間在控制檯中打印,但直到很久以後纔會應用更改UILabel狀態的代碼。BFTASK內的方法即使完成任務也會延遲

例如,我有

[[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的變化印刷直到該方法被調用後才被應用。

回答

3

確保標籤在UI線程(主線程)上更新。將它們封裝在對主線程的調度異步調用中。

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

太棒了,我查了第一個答案,那裏有解決方案。 – Rob 2015-05-08 06:32:55

相關問題