gpt4 book ai didi

objective-c - 邀请停止广告的对等点时,Multipeer Connectivity 崩溃

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:41 24 4
gpt4 key购买 nike

我有以下场景:

  • Peer A 正在自定义 UI 中等待邀请(我们称之为 WaitingVC)。 MCNearbyServiceAdvertiser 对象在应用程序启动时初始化,广告在 WaitingVC 出现时开始(startAdvertisingPeer)。
  • Peer B 已启动并运行 MCNearbyServiceBrowser,还具有自定义 UI(即不使用 Apple 提供的 MCBrowserViewController)。
  • Peer B 找到 Peer A(调用 browser:foundPeer:withDiscoveryInfo:)。
  • 与此同时,Peer A 选择关闭 WaitingVC。广告已停止 (stopAdvertisingPeer)。
  • 有几秒钟的延迟,在对等点 B 发现对等点 A 丢失之前(即 browser:lostPeer:被称为)。
  • 如果在这几秒钟内,Peer B 选择邀请 Peer A(他似乎仍然可以为 Peer B),Peer A 崩溃(是的,受邀者,通常会停止广告)。
  • 同级 B 的邀请通常会超时,但不会出现任何问题。

崩溃发生在队列 com.apple.NSNetServices.tcplistener-queue 中。 dispatch_call_block_and_release 调用在释放时失败 (EXC_BREAKPOINT)。

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

  • 应用委托(delegate):创建一个MCPeerID,存储在一个强大的属性中,
  • 应用委托(delegate):创建一个MCNearbyServiceAdvertiser,存储在一个强大的属性中,设置委托(delegate),
  • WaitingVC 中:调用 startAdvertisingPeer,完成后调用 stopAdvertisingPeer

无论我做什么,崩溃似乎都会发生。如果 MCNearbyServiceAdvertiser 对象和 MCPeerID 对象保存在 WaitingVC 中,因此在 WaitingVC 关闭后销毁,崩溃仍然发生。

除此之外,一切正常(邀请程序、连接、交换数据);但是对于某些失败的这几秒钟窗口是不能接受的。让广告商一直运行可以解决这个问题,但它只是处理症状(而且这个“同步”功能在应用程序中很少使用,所以它也是一种矫枉过正)。

更新:

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

最佳答案

我一直在经历同样的崩溃,根据开发论坛中的这个帖子,其他人也是如此。已为其创建错误报告:

Developer Forums: Multipeer Connectivity Crash

关于objective-c - 邀请停止广告的对等点时,Multipeer Connectivity 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19475366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com