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

时间:2013-12-23 14:40:02

标签: iphone objective-c ios7 nsnetservice multipeer-connectivity

当我浏览iOS 7运行时标题时,有些东西引起了我的注意。在Multipeer Connectivity框架的MCNearbyServiceAdvertiser class部分中,定义了一个名为syncQueue的属性,并定义了多个以sync为前缀的方法。某些方法都存在于前缀和非前缀版本中,例如startAdvertisingPeersyncStartAdvertisingPeer

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

(编辑:删除了CouchDeveloper指出的队列串行的注释,因为我们无法知道)

1 个答案:

答案 0 :(得分:1)

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

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

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

例如,为了满足内部先决条件startAdvertisingPeer 可能假设始终从执行上下文调用 syncQueue EM>。这样,它可以同步调度到syncQueue并调用syncStartAdvertisingPeer而不会陷入死锁。另一方面,syncStartAdvertisingPeer将始终假定在 syncQueue 上执行,这样可以保证并发。

但是,如上所述,我们不知道实际的细节 - 这只是一个粗略的猜测。通常,您应该阅读文档 - 而不是一些私有标题详细信息,以便在您的脑海中绘制出一个可能有效的类。