2014年6月1日日曜日

Objective-Cにおける非同期処理についてちょいと調べた

まあ例によってまだ良くわかってないので調べ中なんですけど。
非同期処理を実装したい場合の方法について。
(厳密な用語として「非同期処理」と括っていいのかわからないけど、
「A処理の実行結果が取得された後にB処理を実行したい」というケース想定)

① dispatch_queueを使用する

dispatch_queue_createの第一引数は任意の文字列(const char)。
他の処理と重複してはいけないのかと最初思ったが、そうでもないようだ。

<参考>
http://fernweh.jp/b/grandcentraldispatch/
http://objective-audio.jp/2009/09/grand-central-dispatch-queue.html

dispatch_queue_t sub_queue = dispatch_queue_create("com.nadegiri.development", 0);
dispatch_async(sub_queue, ^{
    //実行したい処理
    [self hoge];
});

② NSNotificationを使用する

こっちの方がブロック構文とかなくて簡潔かなあ。

<参考>
http://qiita.com/EntreGulss/items/0fbfa1b75eebf075da4d


んで。
結局まだ問題解決してないんですけどね。
「ループ中で非同期処理を実行しても最初の一回しか実行されない」という。
やれやれ。難しいなあ・・・。

0 件のコメント:

コメントを投稿