プライベート ディスパッチ キューで内部的に何らかの作業を行うオブジェクトがあるとします (GCD に慣れていない人はスレッドを考えてください)。このオブジェクトは、実行中のさまざまな時点でデリゲートに通知します。コードが現在実行されているプライベート キューからデリゲート メソッドを呼び出すのは悪い考えですか? それとも、よりよく知られているキューで呼び出す必要がありますか? 後者の場合、どのキューですか? メイン キューが常に希望どおりになるとは限らないようです。
オプション A
dispatch_async(private_queue, ^{
// Do some work...
[self.delegate tellItWorkWasDone:self];
});
オプション B
dispatch_async(private_queue, ^{
// Do some work...
dispatch_sync(dispatch_get_main_queue(), ^{
[self.delegate tellItWorkWasDone:self];
});
});
オプション A には、単純であるという利点がありますが、デリゲート メソッドを実装する人は誰でも、実際には実行してはならないキューでコードを実行することになるという欠点があります。おそらくオプション B の方が安全ですが、main_queue は単なる例です。2 人は実際にどのキューを使用するかをどのように決定すればよいでしょうか?
ありがとう