1

Objective-C では、ブロックは目的に応じて非同期または同期で実行できます。API メソッドを見ただけでは、どちらが起こるかわかりません。

ブロックが別のスレッドにディスパッチされるか、現在のスレッドと同期して実行されるかを示す規則があればいいのですが。

ありますか?

更新:他の言語では注釈が使用される場合があります。va_args メソッドで使用される NS_REQUIRES_NIL_TERMINATION の行に沿って何かを考えています。

4

1 に答える 1

1

番号。ブロックの実行方法を定義する標準的な方法はありません。確認するには、ドキュメント (ある場合) またはソース コード (ある場合) を読む必要があります。

ただし、渡すブロックを制御できるため、常にメインスレッドまたは非同期で実行できます。

例えば

[queue performBlock:^ {
    dispatch_async(dispatch_get_main_queue(), ^{
        // you know code here must be on main thread
    });
}];
于 2013-08-07T04:54:48.557 に答える