Questions tagged «grand-central-dispatch»

Grand Central Dispatch(GCD)为主要在Apple操作系统(例如iOS,macOS,watchOS和tvOS)以及FreeBSD和MidnightBSD中的并发和异步操作提供了一种简单而强大的机制。


5
等待直到任务完成
如何使我的代码等待,直到DispatchQueue中的任务完成?是否需要任何CompletionHandler或其他东西? func myFunction() { var a: Int? DispatchQueue.main.async { var b: Int = 3 a = b } // wait until the task finishes, then print print(a) // - this will contain nil, of course, because it // will execute before the code above } 我正在使用Xcode 8.2并在Swift 3中编写。

2
ARC是否支持调度队列?
我正在阅读有关“调度队列的内存管理”的苹果文档: 即使实现垃圾收集的应用程序,您仍然必须保留并释放您的调度队列和其他调度对象。Grand Central Dispatch不支持垃圾回收模型来回收内存。 我知道ARC不是垃圾收集器,但我想确定我不需要dispatch_retain和dispatch_release我的dispatch_queue_t



1
您是否需要在GCD中的一个块内创建NSAutoreleasePool?
通常,如果生成后台线程或在NSOperationQueue上运行NSOperation,则需要为该线程或操作创建一个NSAutoreleasePool,因为默认情况下不存在。 相同的规则是否适用于放置在Grand Central Dispatch队列中并在非主线程上运行的块?也就是说,您是否需要在分配给主队列以外的任何其他块的每个块内创建一个NSAutoreleasePool? 在有限的测试中,我没有看到通常在后台线程或NSOperation中看到的自动释放对象的控制台警告。但是,我似乎找不到关于此的权威文档,因此我想知道是否有人可以指出该声明的位置。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.