邀请停止广告的同伴时,Multipeer Connectivity崩溃

Rob*_* B. 3 objective-c ios7 multipeer-connectivity

我有以下场景:

  • 对等方A正在等待自定义UI中的邀请(让我们称之为WaitingVC).该MCNearbyServiceAdvertiser对象在应用程序启动初始化,以及广告开始(startAdvertisingPeer的时候)WaitingVC提出.
  • 对等B具有MCNearbyServiceBrowser启动和运行,也具有自定义UI(即,不使用Apple提供的MCBrowserViewController).
  • 对等B找到对等A(browser:foundPeer:withDiscoveryInfo:被称为).
  • 同时Peer A选择关闭WaitingVC.广告已停止(stopAdvertisingPeer).
  • 在Peer B发现之前有几秒滞后,Peer A丢失(browser:lostPeer:即被称为).
  • 如果在这几秒钟内,同伴B选择邀请同伴A(似乎仍然可用于同伴B),同伴A崩溃(是的,被邀请的人,通常停止广告).
  • 同伴B的邀请通常会超时,并且不会出现任何问题.

崩溃发生在队列中com.apple.NSNetServices.tcplistener-queue.一个dispatch_call_block_and_release呼叫在释放失败(EXC_BREAKPOINT).

我真的很想知道,如果这是MC框架中的一个错误; 还是我错过了一些清理程序?同行A仅执行以下操作:

  • App delegate:创建一个MCPeerID存储在一个强大的属性中,
  • App delegate:创建一个MCNearbyServiceAdvertiser,存储在一个强大的属性中,设置委托,
  • WaitingVC:呼叫startAdvertisingPeer,然后stopAdvertisingPeer完成后调用.

无论我做什么,崩溃似乎都会发生.如果MCNearbyServiceAdvertiser对象和MCPeerID对象在关闭后被保留WaitingVC并因此被破坏WaitingVC,则崩溃仍然发生.

除此之外,一切正常(邀请程序,连接,交换数据); 但这几秒钟的某些失败窗口并不是真的可以接受.保持广告客户一直运行解决了这个问题,但它只是处理symtpom(这种"同步"功能在应用程序中很少使用,因此它也是一种过度杀伤力).

更新:

MCAdvertiserAssistant如果我stop在Peer A上调用它的方法,并且在Peer B上快速连接,则在使用时会发生同样的崩溃.另外,我测试了本教程中的场景:http://techmaster.vn/2013/09/multipeer-connectivity-quick-tutorial/ - 结果是一样的:崩溃.所以我有一个强烈的怀疑,这是苹果方面的一个错误......

Chr*_*isH 5

我一直在经历同样的崩溃,并根据开发论坛中的这个主题,所以有其他人.已为其创建错误报告:

开发人员论坛:Multipeer Connectivity Crash