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,它允许你发送一个承诺(我承诺我会做这件事,并在完成时通知你)。