我对iOS目标C中的多线程有疑问。我从来没有在线程上工作过。 在我的应用程序中,我有几个任务只需要在后台运行,用户界面不会被冻结。 以下是代码片段,iOS目标中的多线程C
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
[self someFunctionCallinWebservice];
dispatch_async(dispatch_get_main_queue(), ^(void){
//UI Updates
});
});
在上面的代码,功能:someFunctionCallinWebservice呼吁里面我是用AFNetworking库web服务。在web服务,如果它是成功的,那么我在本地保存数据。我打电话的成功块的功能,以节省从服务器发送类似下面的数据,
[manager POST:url parameters:parameter success:^(AFHTTPRequestOperation *operation, id responseObject){
[self functionToSaveData:someArray];
}
这里someFunctionCallinWebservice在后台运行,但在前台[self functionToSaveData:someArray]
运行。我是否应该在后台线程中使用这个functionToSaveData?
我的意思是如果我在后台调用函数,那么函数的所有相关功能,如调用服务器,获取数据并保存它也必须落在后台线程中。为什么我应该再次创建另一个线程?
请帮助...
它可以在后台运行,直到你需要以任何方式与UI类进行交互。因此,在后台获取并保存,然后在完成时推动UI进行更新。 – Droppy