swift - 从现有 DispatchQueue 创建 SerialDispatchQueueScheduler 时,internalSerialQueueName 的正确用法是什么

标签 swift rx-swift

当做这样的事情时:

import RxSwift 
let queue = DispatchQueue(label: "com.myapp.services")
let scheduler = SerialDispatchQueueScheduler(queue: queue, internalSerialQueueName: ???)

它要我提供一个 internalSerialQueueName 值。我想我只会使用 queue.label 来保持一致,但我看到人们只是使用 "" 作为 internalSerialQueueName.

那么,internalSerialQueueName 值的正确用法是什么?

最佳答案

如果我们检查 init 的实现:

/**
 Constructs new `SerialDispatchQueueScheduler` named `internalSerialQueueName` that wraps `queue`.

 - parameter queue: Possibly concurrent dispatch queue used to perform work.
 - parameter internalSerialQueueName: Name of internal serial dispatch queue proxy.
 - parameter leeway: The amount of time, in nanoseconds, that the system will defer the timer.
 */
public convenience init(queue: DispatchQueue, internalSerialQueueName: String, leeway: DispatchTimeInterval = DispatchTimeInterval.nanoseconds(0)) {
    // Swift 3.0 IUO
    let serialQueue = DispatchQueue(label: internalSerialQueueName,
                                    attributes: [],
                                    target: queue)
    self.init(serialQueue: serialQueue, leeway: leeway)
}

你会看到:

  • internalSerialQueueName 用作队列调度程序运行的名称
  • queue 参数仅用作调度器内部队列的目标

您可以在 target parameter in DispatchQueue 中阅读有关目标队列的更多信息

关于swift - 从现有 DispatchQueue 创建 SerialDispatchQueueScheduler 时,internalSerialQueueName 的正确用法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42657459/

相关文章:

ios - 如何用RXSwift实现UIPickerView

unit-testing - 在 RxSwift 中测试 ViewModel

ios - 'success' 中的成员 'SingleEvent<_>' 产生类型为 'SingleEvent<Element>' 的结果

ios - 使用 iOS SDK 通过 Amazon S3 存储和检索文件

Swift:如何在创建新用户之前检查用户的电话号码是否已经在 Firebase 数据库中

ios - 如何在 viewWillTransitionToSize 之后获取 subview 的大小

ios - RxSwift 简单 withLatestFrom 不触发

ios - RxSwift Realm 在 RunLoop 中观察 Array

ios - Swift with Core Data 在我获取的字符串上得到一个 "Optional("")"?

ios - 在 View Controller 之间传递数据