[問題] NSOperationQueue by order execute

看板MacDev作者 (valda)時間10年前 (2015/07/19 03:34), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/2 (看更多)
請教一下關於NSOperationQueue的問題 NSOperationQueue *queue = [[NSOperationQueue alloc] init]; NSOperation *done = [NSBlockOperation blockOperationWithBlock:^{ [[NSOperationQueue mainQueue] addOperationWithBlock:^{ NSLog(@"success"); }]; }]; NSOperation *op = [NSBlockOperation blockOperationWithBlock:^{ [self blockMethod1:^{ NSLog(@"method1 done"); }]; }]; [done addDependency:op]; [queue addOperation:done]; [queue addOperation:op]; 我期望的結果是先print method1 done再print success出來 已經設定好done需要在op執行後再執行 但事與願違 真正的結果是先print success再print method1 done 請問有哪裡做錯嗎? 怎樣才能修正回來呢? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.200.200 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1437248054.A.AEF.html

07/19 03:55, , 1F
請給 blockMethod1 實作
07/19 03:55, 1F

07/19 04:03, , 2F
blockMethod1是用AFNetworking call web api
07/19 04:03, 2F

07/19 11:33, , 3F
如同 uranusjr 提到,這與 blockMethod1 實作有關。
07/19 11:33, 3F

07/19 11:34, , 4F
簡單實驗了一下的結果,你可以參考看看:
07/19 11:34, 4F

07/19 11:34, , 5F
07/19 11:34, 5F
文章代碼(AID): #1Lggeshl (MacDev)
文章代碼(AID): #1Lggeshl (MacDev)