为什么MCNearbyServiceAdvertiser在内部使用调度队列?

问题描述:

在浏览iOS 7运行时头文件时,引起了我的注意。在MCNearbyServiceAdvertiser class(Multipeer连接框架的一部分)中,名为syncQueue的属性是,并定义了多个以sync为前缀的方法。某些方法都以前缀和非前缀版本存在,如startAdvertisingPeersyncStartAdvertisingPeer为什么MCNearbyServiceAdvertiser在内部使用调度队列?

我的问题是,这个属性和这些前缀方法的目的是什么,它们是如何组合的?

(编辑:删除此话队列是串行由CouchDeveloper指出的那样,因为我们无法知道这一点)

如你所知,实施是私有的。

拥有一个名字为syncQueue的调度队列可能并不意味着这个队列是一个串行队列。它可能也是一个并发队列。

我们只能猜测startAdvertisingPeer和“前缀”版本syncStartAdvertisingPeer可能意味着什么。

例如,为了满足内部先决条件startAdvertisingPeer可能假设它总是从一个执行上下文调用除了syncQueue。这样,它可以同步调用到syncQueue调用syncStartAdvertisingPeer而不会结束死锁。另一方面,syncStartAdvertisingPeer将总是假设在syncQueue上执行,这样保证了并发性。

但是,如前所述,我们不知道实际的细节 - 这只是一个粗略的猜测。通常情况下,你应该阅读文档 - 而不是一些私人头文件的细节,以便在你的脑海中画出一幅这个类可能如何工作的图画。