GKSession调用是否阻塞了主线程



我在技术说明TN2277中读到,当应用程序进入后台时,关闭各种网络套接字非常重要。这很可能也包括GKSession。

他们说,当进入后台时需要一个过期处理程序,并且重要的是,如果必须与其他对等方说"再见",则必须异步调用网络代码。

那么GKSession sendData方法是异步的还是阻塞的呢?

在iOS 6的某些情况下,GKSession阻塞主线程肯定会出现问题。目前,我们无法将我们的iPad池移到iOS 6,因为我们的企业GKSession网络应用程序遇到了这些阻塞问题(但在iOS 5或更早版本中没有)。例如,从服务器iPad同时向4台以上的iPad发送文件会导致阻塞行为。在iOS 5中,我们可以将文件同时发送到多达15个连接的客户端,而不会出现问题。

此外,我们的初步测试表明,混合使用iOS 5和6设备,如果iOS 6设备在iOS 5设备之后连接,则iOS 6设备将经历主线程锁定。

我已经向iOS开发中心发布了一份事件报告,但没有收到任何回复。。。

11月30日更新:我现在收到了苹果的回复,他们将其视为iOS 6中GameKit的一个漏洞,并正在进行调查。如果你在iOS 6(但不是iOS 5或更早版本)中也遇到GKSession阻塞问题,那么你应该将其报告为错误。

最新更新