我知道dispatch_queue_t
是一个c结构,而不是NSObject。那么我们应该使用XCTAssertEqual
还是XCTAssertEqualObject
呢?当我们有两个不同的指针指向同一个队列时,这可能吗?
dispatch_queue_t
不是结构。它是NSObject<OS_dispatch_queue>
。(有一个环境变量可以用来控制它是否是一个对象,但现在它几乎总是一个对象。(
应该警惕使用任何形式的相等来确定您是否在正确的队列中,因为如果没有其他内容,一个队列可以针对另一个队列。在我们的代码中,我们不测试队列的值,而是倾向于使用dispatch_assert_queue
(或Swift中的dispatchPrecondition(.onQueue())
(。
如果这是您自己的自定义队列,则另一种选择是dispatch_queue_set_specific
,然后是dispatch_queue_get_specific
。