Objective c 目标c同步请求查询

Objective c 目标c同步请求查询,objective-c,sendasynchronousrequest,Objective C,Sendasynchronousrequest,我正在尝试使用一些客观的c代码将图像和一些文本数据上传到我的Web服务器,这一切都很好。我只是想在显示器上添加一个基本的进度指示“文本框”来显示进度,比如说“上传” 我在buttons iAction中使用以下代码来启动上载 NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 这有效地阻止了我在上传完成之前更新文本描述框(或任何屏幕参数)(我

我正在尝试使用一些客观的c代码将图像和一些文本数据上传到我的Web服务器,这一切都很好。我只是想在显示器上添加一个基本的进度指示“文本框”来显示进度,比如说“上传”

我在buttons iAction中使用以下代码来启动上载

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

这有效地阻止了我在上传完成之前更新文本描述框(或任何屏幕参数)(我想这是由于同步操作的性质)如何在上传开始之前更新一些屏幕参数(但仍在按钮iAction内)?

sendSynchronousRequest是,顾名思义,是同步的,因此会阻塞 当前线程。因为所有UI更新仅在程序控制返回时完成 对于主事件循环,您必须将上载移动到单独的线程, 例如:

self.progressLabel.text = @"Uploading...";
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
        NSData *returnData = [NSURLConnection sendSynchronousRequest:...];

        // UI activity must be done on the main thread again:
        dispatch_async(dispatch_get_main_queue(),^{
            self.progressLabel.text = @"Done.";
        });
    });
或者,您可以使用
[NSURLConnection sendAsynchronousRequest:…]