我在技术说明TN2277中读到,当应用程序进入后台时,关闭所有类型的网络套接字是很重要的。这很可能还包括GKSession。
他们说,当转到后台时,需要一个到期处理程序,如果网络代码必须向其他对等点说“再见”,那么必须异步调用它,这一点很重要。
那么GKSession sendData方法是异步的还是阻塞的呢?
发布于 2012-11-29 21:38:34
在某些情况下,GKSession在iOS 6中阻塞主线程肯定存在问题。目前,我们无法将我们的iPads池转移到iOS 6,因为我们的企业GKSession网络应用程序遇到了这些阻塞问题(但在iOS 5或更早版本中不会)。例如,从服务器iPad同时向4个以上的iPads发送文件会导致阻塞行为。在iOS 5中,我们可以将文件同时发送到最多15个连接的客户端,而不会出现问题。
此外,我们的初始测试表明,如果混合使用iOS 5和6设备,如果iOS 6设备在iOS 5设备之后连接,则iOS 6设备将遇到主线程锁定。
我已经在iOS开发人员中心发布了一份事件报告,但没有收到任何回复。
11月30日更新:我现在收到了苹果的回复,他们正在将其视为iOS 6的GameKit中的一个错误,并正在进行调查。如果您在iOS 6(而不是iOS 5或更早的版本)中也遇到了GKSession阻塞问题,那么您应该将其报告为错误。
https://stackoverflow.com/questions/13484580
复制相似问题