7

dispatch_async()順番に 3 回呼び出すとします。

dispatch_async(dispatch_get_main_queue(),
         ^{
             [self doOne];
});

// some code here

dispatch_async(dispatch_get_main_queue(),
         ^{
             [self doTwo];
});

// more code here

dispatch_async(dispatch_get_main_queue(),
         ^{
             [self doThree];
});

これは常に次のように実行されますか

[self doOne][self doTwo]、それ[self doThree]から 、または順序は保証されていますか?

この場合、問題はおそらくメイン キューがシリアルかコンカレントかということです。

4

2 に答える 2

17

ドキュメントから:

dispatch_get_main_queue

アプリケーションのメイン スレッドに関連付けられたシリアルディスパッチ キューを返します。

したがって、メイン キューはシリアルキューであり[self doOne]、 、[self doTwo][self doThree]がこの順序で順次実行されます。

于 2013-05-18T19:14:33.290 に答える