gpt4 book ai didi

swift - 检查 Swift 3 中是否在正确的调度队列中

转载 作者:IT王子 更新时间:2023-10-29 05:13:48 30 4
gpt4 key购买 nike

我有几个单元测试,我想在其中测试是否在正确的调度队列上调用回调。

在 Swift 2 中,我将当前队列的标签与我的测试队列进行了比较。但是在 Swift 3 中,DISPATCH_CURRENT_QUEUE_LABEL 常量不再存在。

我确实找到了 dispatch_assert_queue 函数。这似乎是我需要的,但我不确定如何调用它。

我的 Swift 2 代码:

let testQueueLabel = "com.example.my-test-queue"
let testQueue = dispatch_queue_create(testQueueLabel, nil)

let currentQueueLabel = String(UTF8String: dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL))!
XCTAssertEqual(currentQueueLabel, testQueueLabel, "callback should be called on specified queue")

更新:

我对缺少自动完成感到困惑,但可以使用 __dispatch_assert_queue:

if #available(iOS 10.0, *) {
__dispatch_assert_queue(test1Queue)
}

虽然这确实适用于单元测试,但它很烦人地用 EXC_BAD_INSTRUCTION 停止了整个过程,而不仅仅是测试失败。

最佳答案

使用dispatchPrecondition(.onQueue(expectedQueue))dispatch_assert_queue() C API 的 Swift 3 API 替换。

WWDC 2016 GCD session (21:00,幻灯片 128)对此进行了介绍: https://developer.apple.com/videos/play/wwdc2016/720/

关于swift - 检查 Swift 3 中是否在正确的调度队列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37952262/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com