[問題] dispatch_async callback not work

作者: valda (valda)   2014-09-23 16:20:55
在跟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那行
作者: howdiun (Howdiun)   2014-09-24 09:00:00
FB最厲害的就是這個
作者: Koromiko (Koromiko.Neo)   2014-09-30 23:42:00
這是FB的bug(?), 如果你active session跑的thread跟startWithGraphPath跑的不一樣, callback就不會發生它會認定你的session是空的就直接丟掉修正一下,我說錯了,我查了一下跟run loop有關這支底層用的是NSURLConnection,如果不是跑在主線需要自己設定run loop讓它有辦法繼續下去我是參考http://ppt.cc/PGsX但是那個最佳解我覺得不是正解他丟到main thread跟直接寫是一樣的trace FB這隻, 它原本就會把request丟到背景跑所以你可能要確定一下是不是這隻在吃資源, 還是其它原因

Links booklink

Contact Us: admin [ a t ] ucptt.com