1

以前は、完了ブロックが正しいキューで呼び出されるようにするヘルパー メソッド (静的) がありました。

  + (void)_deadlockCheckBlock:(void(^)(void))block caller:(dispatch_queue_t)caller {
     NSParameterAssert(block);
     NSParameterAssert(caller);
     if (caller == dispatch_get_current_queue()) {
        block();
     }
     else {
        dispatch_async(caller, block);
     }}

今、非推奨を克服するために

dispatch_get_current_queue()

get_main_queue メソッドを使用してメソッドを書き直しました。

+ (void)_deadlockCheckBlock:(void(^)(void))block caller:(dispatch_queue_t)caller {
   NSParameterAssert(block);
   NSParameterAssert(caller);
   dispatch_sync(dispatch_get_main_queue(), ^{
     //This will ensure to be on the main queue
     if (caller == dispatch_get_main_queue()) {
        block();
     }
     else {
        dispatch_async(caller, block);
     }
   });}

メインキューに行かずに同じ動作を得るより良い方法はありますか?

4

1 に答える 1