看板 MacDev 關於我們 聯絡資訊
在跟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: 我是參考http://ppt.cc/PGsX 09/30 23:51
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