0

我遇到問題。我在dispatch_async中調用了一些方法。但在callMethod2不同的對象我上傳圖像[NSURLConnection sendAsynchronousRequest。但上傳後,它不顯示我的迴應。 (但是,當我調用callMethod2沒有dispatch_async,它很好)。哪裏可以解決問題?在dispatch_async中上載UIImage

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ 
    [offline callMethod1]; 
    [offline callMethod2]; 
}); 

上傳圖像

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 

    NSLog("Never show me me this log"); 

}]; 
+0

我想因爲你從另一個隊列中調用這個方法,並且在你使用異步方法(所以它是從另一個線程調用的)method2的實現中,我建議你從dispach異步中調出方法2。 – Mohamad

+0

'NSURLConnection sendAsynchronousRequest'已經是異步的,移動你的'[offline callMethod1];' &&'[offline callMethod2];'dispatch_async(dispatch_get_global_queue()}];'不要擔心它不會阻止主線程。 – 0yeoj

回答

1

你在一個線程是不是主線程調用的NSLog(又名調用它異步),所以你不會看到的NSLog,因爲它必須在運行主線程。

完成塊完成後,您可以通過其他方式通知您。我發現的最好方法是使用https://github.com/kseebaldt/deferred,它允許你發送一個承諾(我承諾我會做這件事,並在完成時通知你)。