调用dispatch_async(dispatch_get_main_queue())时UIView屏幕冻结

时间:2016-06-27 11:39:10

标签: ios swift dispatch-async

我有一个弹出窗口需要显示,直到所有图像都上传到视图控制器上,我使用dispatch-async方法在所有图像上传之前显示弹出窗口并在图像显示时隐藏。

但是UIView屏幕冻结了在调用dispatch_async方法时显示挂起弹出窗口,其中我在代码中出错或者是实现此目的的最佳方法。

func imageIconTapped(gesture: UITapGestureRecognizer){
        self.loadingPopUp = showPopUp(self, txt: “Processing..")
        self.navigationController!.view.addSubview(self.loadingPopUp!)

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {

           code to getting the image   // getting the images is time taking therefore it work in the background. 

            dispatch_async(dispatch_get_main_queue()) {                

        method to upload the images on the view controller and hide the popup.            
        }

1 个答案:

答案 0 :(得分:-1)

功能" imageIconTapped"是已经在主线程上运行的UIKit方法。因此无需将代码分派给主队列。

当您将代码从主线程分派到主队列时,主线程就会阻塞。