現在,我正嘗試使用FBConnect將照片圖像上傳到Facebook。 我成功地從主線上傳圖像,但是,它阻塞了很長時間的用戶界面。如何使用NSURLConnection異步上傳大圖像?
所以,我試圖使用dispatch_async解決阻塞問題。通過使用調度隊列,可以解決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, Wonil。
今天遇到同樣的問題,FBRequest的NSURLConnection在後臺線程中運行時不會調用委託方法。 (沒有使用塊)。這裏有一個類似的問題沒有答案:http://stackoverflow.com/questions/4626273/unable-to-upload-images-to-facebook-from-my-background-thread – 2011-05-13 18:43:20
結束了使用ASIHTTPRequest,這在後臺線程。解決方案可能是微不足道的。學習會很有趣。 – 2011-05-13 18:43:56