为什么MCNearbyServiceAdvertiser在内部使用调度队列?
问题描述:
在浏览iOS 7运行时头文件时,引起了我的注意。在MCNearbyServiceAdvertiser class(Multipeer连接框架的一部分)中,名为syncQueue
的属性是,并定义了多个以sync
为前缀的方法。某些方法都以前缀和非前缀版本存在,如startAdvertisingPeer
和syncStartAdvertisingPeer
。为什么MCNearbyServiceAdvertiser在内部使用调度队列?
我的问题是,这个属性和这些前缀方法的目的是什么,它们是如何组合的?
(编辑:删除此话队列是串行由CouchDeveloper指出的那样,因为我们无法知道这一点)
答
如你所知,实施是私有的。
拥有一个名字为syncQueue
的调度队列可能并不意味着这个队列是一个串行队列。它可能也是一个并发队列。
我们只能猜测startAdvertisingPeer
和“前缀”版本syncStartAdvertisingPeer
可能意味着什么。
例如,为了满足内部先决条件startAdvertisingPeer
可能假设它总是从一个执行上下文调用除了的syncQueue。这样,它可以同步调用到syncQueue调用syncStartAdvertisingPeer
而不会结束死锁。另一方面,syncStartAdvertisingPeer
将总是假设在syncQueue上执行,这样保证了并发性。
但是,如前所述,我们不知道实际的细节 - 这只是一个粗略的猜测。通常情况下,你应该阅读文档 - 而不是一些私人头文件的细节,以便在你的脑海中画出一幅这个类可能如何工作的图画。