【发布时间】:2011-05-13 17:27:20
【问题描述】:
现在,我正在尝试使用 FBConnect 将照片图像上传到 Facebook。 我成功地从主线程上传图像,但是它阻塞了用户界面很长时间。
所以,我尝试使用 dispatch_async 来解决阻塞问题。使用 dispatch queue 可以解决 UI 阻塞问题,但是上传照片数据就不行了。
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
img, @"picture",
nil];
dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
[params retain];
dispatch_async(aQueue, ^{
[facebook requestWithMethodName:@"photos.upload"
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
[params release];
dispatch_async(aQueue, ^{ [uploadingIndicator stopAnimating]; });
});
我认为这个问题与 NSURLConnection 有关。 FBConnect 使用 NSURLConnection 将图像数据发布到 facebook。如果我从调度队列调用 FBConnect API,在调度队列线程中调用的 NSURLConnection 方法可能没有运行循环。
_connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
我尝试使用 scheduleInRunLoop。但是,没用。
_connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[_connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
我该如何解决这个问题?有什么建议吗?
BR, 元一。
【问题讨论】:
-
今天遇到了同样的问题,FBRequest 的 NSURLConnection 在后台线程中运行时不会调用委托方法。 (没有使用块)。这是一个没有答案的类似问题:stackoverflow.com/questions/4626273/…
-
最终使用了 ASIHTTPRequest,它在后台线程中运行良好。解决方案可能是微不足道的。学习会很有趣。
标签: iphone ios facebook nsurlconnection grand-central-dispatch