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