在ios中,使用swift进行线程间通信的最佳方式是什么?

在ios中,使用swift进行线程间通信的最佳方式是什么?,ios,swift,singleton,global-variables,grand-central-dispatch,Ios,Swift,Singleton,Global Variables,Grand Central Dispatch,在并发线程中以阻塞方式执行某些逻辑(例如dispatch_sync(MyConcurrentQ)-//DB connection)并在主队列中以阻塞方式轮询以完成该操作,以便我仅在并发线程完成时才显示下一个视图的最佳做法是什么?我在apple文档中找到了答案 苹果公司关于该主题的文档说:“常规通知中心在发布通知的线程上发送通知。[…]有时,您可能会要求在由您而不是通知中心确定的特定线程上发送通知。[…]在这些情况下,您必须捕获在默认线程上传递的通知,并将其重定向到相应的线程。” 我在苹果的文档中

在并发线程中以阻塞方式执行某些逻辑(例如dispatch_sync(MyConcurrentQ)-//DB connection)并在主队列中以阻塞方式轮询以完成该操作,以便我仅在并发线程完成时才显示下一个视图的最佳做法是什么?

我在apple文档中找到了答案 苹果公司关于该主题的文档说:“常规通知中心在发布通知的线程上发送通知。[…]有时,您可能会要求在由您而不是通知中心确定的特定线程上发送通知。[…]在这些情况下,您必须捕获在默认线程上传递的通知,并将其重定向到相应的线程。”
我在苹果的文档中找到了答案 苹果公司关于该主题的文档说:“常规通知中心在发布通知的线程上发送通知。[…]有时,您可能会要求在由您而不是通知中心确定的特定线程上发送通知。[…]在这些情况下,您必须捕获在默认线程上传递的通知,并将其重定向到相应的线程。”

单例的可能重复并不能替代您提到的任何通信方法。单例使对象A可以获得对其他对象B的引用,但它不提供在对象A中执行某些代码以响应对象B中的更改的方法。对象A需要轮询B的属性,寻找更改,这不是一个好主意。顺便说一句,您链接到的“singleton”示例是我见过的最糟糕的代码之一。它创建了越来越深的视图控制器,并鼓励使用全局(无论如何都不是全局)我正在使用第三方框架建立与某个数据库的连接,我需要显示进度条,直到成功建立连接,该框架有无效的API和一个ConnectionListener,我从中设置全局变量“Done=True”,并在ViewController中轮询它以关闭进度条,实现这一点的最佳实践是什么,我还是swift iOS worldNSNotification和线程的初学者?不要。请签出
NSOperation
NSOperationQueue
。它们是围绕GCD的高级包装器,允许您添加依赖项并配置最高级别的并发性。如果您需要更多帮助,请检查此可能重复的singleton不是您提到的任何通信方法的替代方法。单例使对象A可以获得对其他对象B的引用,但它不提供在对象A中执行某些代码以响应对象B中的更改的方法。对象A需要轮询B的属性,寻找更改,这不是一个好主意。顺便说一句,您链接到的“singleton”示例是我见过的最糟糕的代码之一。它创建了越来越深的视图控制器,并鼓励使用全局(无论如何都不是全局)我正在使用第三方框架建立与某个数据库的连接,我需要显示进度条,直到成功建立连接,该框架有无效的API和一个ConnectionListener,我从中设置全局变量“Done=True”,并在ViewController中轮询它以关闭进度条,实现这一点的最佳实践是什么,我还是swift iOS worldNSNotification和线程的初学者?不要。请签出
NSOperation
NSOperationQueue
。它们是围绕GCD的高级包装器,允许您添加依赖项并配置最高级别的并发性。如果您需要更多帮助,请检查此项