While I was browsing through the iOS 7 runtime headers, something caught my eye. In the MCNearbyServiceAdvertiser class, part of the Multipeer Connectivity framework, a property called syncQueue
is and multiple methods prefixed with sync
are defined. Some of the methods both exist in a prefixed and non-prefixed version, such as startAdvertisingPeer
and syncStartAdvertisingPeer
.
My question is, what would be the purpose of both this property and these prefixed methods, and how are they combined?
(edit: removed the remark that the queue is serial as pointed out by CouchDeveloper, since we cannot know this)
As you know, the implementation is private.
Having a dispatch queue whose name is
syncQueue
may not mean that this queue is a serial queue. It might be a concurrent queue as well.We can only have a guess what the
startAdvertisingPeer
and the "prefixed" versionsyncStartAdvertisingPeer
might mean.For example, in order to fulfill internal prerequisites
startAdvertisingPeer
might assume that it is always invoked from an execution context except the syncQueue. That way, it can synchronously dispatch to the syncQueue with invokingsyncStartAdvertisingPeer
without ending up in a deadlock. On the other hand,syncStartAdvertisingPeer
will always assume to execute on the syncQueue, that way guaranteeing concurrency.But, as stated, we don't know the actual details - it's just a rough guess. Usually, you should read the documentation - and not some private header details to draw a picture in your mind how this class might likely work.