1

なぜこれが起こっているのかわかりませんが、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 の変更はメソッドが呼び出されてからしばらく経つまで適用されないことです。

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 に答える