我阅读了技术说明 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 日更新:我现已收到 Apple 的回复,他们将其视为 iOS 6 中 GameKit 中的错误并正在进行调查。如果您还在 iOS 6 中遇到 GKSession 阻塞问题(但不是 iOS 5 或更早版本),那么您应该将其报告为错误。
关于iphone - GKSession 调用是否会阻塞主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484580/