我有一个我正在尝试创建的过程,我在其中下载不同的 xml 文件并从网站解析它们。目前,我可以使用...让它们全部工作
dispatch_async(dispatch_get_current_queue(),^ { [self updatePersons]; });
dispatch_async(dispatch_get_current_queue(),^ { [self updatePlaces]; });
dispatch_async(dispatch_get_current_queue(),^ { [self updatePositions]; });
dispatch_async(dispatch_get_current_queue(),^ { [self updateContacts]; });
这会锁定主线程,因为我正在使用dispatch_get_current_queue
. 我怎样才能在不中断对方的情况下执行这些操作,在尝试以下方法时似乎就是这种情况。
dispatch_async(dispatch_get_global_queue(0,0),^ { [self updatePersons]; });
我正在使用的代码的完整版本如下,但是根据我的日志输出会发生什么是它们同时执行(如果我理解一切正确,我得到的目的是);但是,它们的代码从未真正完成......我无法通过日志输出判断是否所有内容都被解析,并且主屏幕保持冻结状态。日志只显示它应该显示的部分日志......似乎被其他进程的NSLog
消息打断了。
dispatch_async(dispatch_get_global_queue(0,0),^ { [self updatePersons]; });
dispatch_async(dispatch_get_global_queue(0,0),^ { [self updatePlaces]; });
dispatch_async(dispatch_get_global_queue(0,0),^ { [self updatePositions]; });
dispatch_async(dispatch_get_global_queue(0,0),^ { [self updateContacts]; });
dispatch_async(dispatch_get_global_queue(-2,0),^ {
dispatch_async(dispatch_get_main_queue(),^ {[self setBottomBarToUpdated]; });
});
我正在尝试为应用程序创建一种通过上述每个功能下拉信息的方式,同时通过底部栏上的标签在执行时更新用户的进度。通过在四个函数中的每一个中使用以下代码,我似乎可以正常更新文本...
dispatch_async(dispatch_get_main_queue(),^ {
[self setBottomBarToUpdating:@"Updating Places..."];
});
如果有人可以为正确使用队列的方法提供帮助,以便我的应用程序不会锁定,我将不胜感激。谢谢!