以前は、完了ブロックが正しいキューで呼び出されるようにするヘルパー メソッド (静的) がありました。
+ (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);
}
});}
メインキューに行かずに同じ動作を得るより良い方法はありますか?