作者valda (valda)
看板MacDev
標題[問題] dispatch_async callback not work
時間Tue Sep 23 16:20:55 2014
在跟FB Graph API要資料時
xcode提醒我,這行為佔用main thread太久的時間
所以我把這段程式碼丟到dispatch_async中執行
但卻完全沒反應
請問有得解嗎?
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
0), ^{
[FBRequestConnection startWithGraphPath:@"/me/taggable_friends"
parameters:nil
HTTPMethod:@"GET"
completionHandler:^(
FBRequestConnection
*connection,
id result,
NSError *error
) {
/* handle the result */
NSLog(@"%@",result);
[self insertFriendInfoToContainer:[result
objectForKey:@"data"]];
}];
});
不管如何,都無法執行到nslog那行
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.186.235
※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1411460461.A.35D.html
推 howdiun: FB最厲害的就是這個 09/24 09:00
推 Koromiko: 這是FB的bug(?), 如果你active session跑的thread跟 09/30 23:42
→ Koromiko: startWithGraphPath跑的不一樣, callback就不會發生 09/30 23:42
→ Koromiko: 它會認定你的session是空的就直接丟掉 09/30 23:43
推 Koromiko: 修正一下,我說錯了,我查了一下跟run loop有關 09/30 23:48
→ Koromiko: 這支底層用的是NSURLConnection,如果不是跑在主線 09/30 23:49
→ Koromiko: 需要自己設定run loop讓它有辦法繼續下去 09/30 23:50
→ Koromiko: 但是那個最佳解我覺得不是正解 09/30 23:59
→ Koromiko: 他丟到main thread跟直接寫是一樣的 10/01 00:00
→ Koromiko: trace FB這隻, 它原本就會把request丟到背景跑 10/01 00:00
→ Koromiko: 所以你可能要確定一下是不是這隻在吃資源, 還是其它原因 10/01 00:01