Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在向服务器发送多个请求时使用多个线程?_Ios_Multithreading - Fatal编程技术网

Ios 如何在向服务器发送多个请求时使用多个线程?

Ios 如何在向服务器发送多个请求时使用多个线程?,ios,multithreading,Ios,Multithreading,我正在开发一个iOS应用程序,用户可以在其收藏夹列表中存储位置(地点、建筑等)。该列表存储在MySQL数据库中,通过HTTP请求,我可以检索并在地图上显示它们。此外,用户最喜爱的位置存储在设备上,[NSUserDefaults standardUserDefaults]。然而,因为用户可能已经从他的列表中删除了一个位置,所以我必须仔细检查每个位置(存储在设备中)是否仍然存在于数据库中。在这里,我必须提到,一旦用户登录,应用程序就会存储他的信息(下载最喜欢的位置并将其存储在设备中),下一次,用户会

我正在开发一个iOS应用程序,用户可以在其收藏夹列表中存储位置(地点、建筑等)。该列表存储在MySQL数据库中,通过HTTP请求,我可以检索并在地图上显示它们。此外,用户最喜爱的位置存储在设备上,
[NSUserDefaults standardUserDefaults]
。然而,因为用户可能已经从他的列表中删除了一个位置,所以我必须仔细检查每个位置(存储在设备中)是否仍然存在于数据库中。在这里,我必须提到,一旦用户登录,应用程序就会存储他的信息(下载最喜欢的位置并将其存储在设备中),下一次,用户会自动登录。用户可以使用“删除帐户”从特定设备删除任何个人详细信息。所有位置都作为“逗号分隔符”文件存储在设备中

我的问题是,我如何在阅读每一栋建筑和1)检查是否包含在用户的存储列表中2)包含在用户的数据库列表中时提高应用程序的速度。此时,我的地图保持静止(小方块),直到完成上述步骤,然后加载地图并移动到用户的当前位置。我的冻结时间约为4-5秒

我试着调用负责, “从文件中读取每个位置>检查是否存在于用户存储的收藏夹列表>(如果是)检查数据库中的用户收藏夹列表中是否仍然存在>(如果是)添加注释>(否则)将其从存储列表中删除[删除对象]” 使用

但是延迟仍然在03.7-04.9秒左右

我正在使用
调度\u获取\u全局\u队列
错误


提前感谢。

我建议从仪器的时间分析开始。这将有助于您了解流程的主要瓶颈只要您没有在该块中进行任何UI更新,调用
dispatch\u get\u global\u queue
,就不会有任何问题。任何UI更新都需要发送回主队列。这里没有足够的信息让我们来诊断问题。你好@Rob,不,我在该方法中没有任何UI更新。我只是清理注释数组,根据当前位置存储新注释,最后在地图上添加注释。其余部分发生在主线程中。它很好地指示了哪些方法占用了大部分计算时间。另见。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
                                             (unsigned long)NULL), ^(void) {
        //call method
});