作者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://webptt.com/cn.aspx?n=bbs/MacDev/M.1411460461.A.35D.html
1F:推 howdiun: FB最厉害的就是这个 09/24 09:00
2F:推 Koromiko: 这是FB的bug(?), 如果你active session跑的thread跟 09/30 23:42
3F:→ Koromiko: startWithGraphPath跑的不一样, callback就不会发生 09/30 23:42
4F:→ Koromiko: 它会认定你的session是空的就直接丢掉 09/30 23:43
5F:推 Koromiko: 修正一下,我说错了,我查了一下跟run loop有关 09/30 23:48
6F:→ Koromiko: 这支底层用的是NSURLConnection,如果不是跑在主线 09/30 23:49
7F:→ Koromiko: 需要自己设定run loop让它有办法继续下去 09/30 23:50
9F:→ Koromiko: 但是那个最佳解我觉得不是正解 09/30 23:59
10F:→ Koromiko: 他丢到main thread跟直接写是一样的 10/01 00:00
11F:→ Koromiko: trace FB这只, 它原本就会把request丢到背景跑 10/01 00:00
12F:→ Koromiko: 所以你可能要确定一下是不是这只在吃资源, 还是其它原因 10/01 00:01