升级到iOS 8让我的SpriteKit游戏变得超级慢

升级到iOS 8让我的SpriteKit游戏变得超级慢,ios,objective-c,iphone,ios8,Ios,Objective C,Iphone,Ios8,昨天我把iPhone5升级到了iOS8,开始玩我开发的一款游戏,这款游戏已经在app store上运行了大约两个月。仅仅升级到iOS 8,我的游戏就严重落后了。在iOS 7中,像iPhone 4这样运行速度为60FPS的旧设备,我从未遇到过任何滞后问题。这是一个严重的问题,因为我不希望我的客户在升级到iOS 8后遇到同样的问题。你知道为什么会这样吗 编辑:我刚刚做了一些测试,我的FPS仍然是60,但我的节点仍然移动缓慢。在我的程序中,我将physicsWorld.speed设置为0.05。当我将

昨天我把iPhone5升级到了iOS8,开始玩我开发的一款游戏,这款游戏已经在app store上运行了大约两个月。仅仅升级到iOS 8,我的游戏就严重落后了。在iOS 7中,像iPhone 4这样运行速度为60FPS的旧设备,我从未遇到过任何滞后问题。这是一个严重的问题,因为我不希望我的客户在升级到iOS 8后遇到同样的问题。你知道为什么会这样吗


编辑:我刚刚做了一些测试,我的FPS仍然是60,但我的节点仍然移动缓慢。在我的程序中,我将physicsWorld.speed设置为0.05。当我将其设置得更高时,节点不再滞后。似乎iOS 8 physicsWorld.speed的工作原理与iOS 7不同。我需要那个速度,否则我的游戏就不能正常运行。我仍在调查这是否是完整的问题

physicsWorld.speed属性在iOS8中的工作方式与在iOS7中的工作方式不同。将physicsWorld.velcoity属性更改为不同的CGVector会产生相同的效果

就我目前的调试而言,有一个问题是

enumerateChildNodesWithName: @"XX" usingBlock:^(SKNode *node, BOOL *stop) { ..
在iOS 8中,这个呼叫似乎很慢,也许有很好的理由,谁知道

无论如何,我用一个简单的循环来代替它,比如:

for(SKNode *node in [myCustomLayer children])
{
   if ([node.name isEqualToString: @"blabla"] )
   {
   ..

而且FPS已经备份了。不确定这是否解决了所有问题,但它在我的游戏中起到了重要作用。

苹果提供了一些工具,可以告诉你为什么应用程序速度慢。运行它们,调查输出并将结果发布在这里,否则这只是猜测。我也会这样。在iOS8上运行的相同代码存在延迟。