当运行一个动作时,Sprite Kit会崩溃,或者仅在iPad Air和iPad mini上加载video

我收到来自Retina mini和iPad Air设备的崩溃报告,但不是iPhone 5S。 它出现在SpriteKit中,当有人点击一个应该在屏幕上显示另一个的精灵时。

我不能在非A7设备上重现这一点,所以想知道是否有人可以看看下面的崩溃日志,让我知道崩溃可能是由什么造成的?

Exception Type: SIGSEGV Exception Codes: SEGV_ACCERR at 0xb000000c Crashed Thread: 0 Thread 0 Crashed: 0 libobjc.A.dylib 0x39b30b66 objc_msgSend + 5 1 CoreUI 0x3349bd0d -[CUIStructuredThemeStore renditionWithKey:] + 1050 2 CoreUI 0x334a50af -[CUINamedImage _renditionForSpecificKey:] + 168 3 CoreUI 0x334a50fd -[CUINamedImage image] + 18 4 UIKit 0x31b2ec01 -[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:] + 260 5 UIKit 0x31b2eaf7 -[_UIAssetManager imageNamed:scale:idiom:subtype:] + 38 6 UIKit 0x31b2eacd -[_UIAssetManager imageNamed:idiom:subtype:] + 44 7 UIKit 0x31b2ea9b -[_UIAssetManager imageNamed:idiom:] + 46 8 UIKit 0x31b75c45 +[UIImage imageNamed:inBundle:] + 56 9 SpriteKit 0x319fde65 __26-[SKTexture loadImageData]_block_invoke + 1282 10 SpriteKit 0x31a3798d SKSpinLockSync(int*, void ()() block_pointer) + 102 11 SpriteKit 0x319fd8fd -[SKTexture loadImageData] + 300 12 SpriteKit 0x31a007ef -[SKTexture size] + 42 13 SpriteKit 0x31a21585 -[SKSpriteNode initWithTexture:] + 180 14 SpriteKit 0x31a217e3 +[SKSpriteNode spriteNodeWithTexture:] + 146 15 White 0x000c6037 -[EggsOnShelfScene useStrawToolOn:] (EggsOnShelfScene.m:546) 16 White 0x000c4c9b -[EggsOnShelfScene useToolOnEgg:] (EggsOnShelfScene.m:400) 17 White 0x000d0929 -[EggsOnShelfScene handleTapGesture:] (EggsOnShelfScene.m:1746) 18 UIKit 0x31c99739 _UIGestureRecognizerSendActions + 194 19 UIKit 0x31b4418b -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 1138 20 UIKit 0x31ecfd4f ___UIGestureRecognizerUpdate_block_invoke + 44 21 UIKit 0x31b0b5cf _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 216 22 UIKit 0x31b09d33 _UIGestureRecognizerUpdate + 296 23 UIKit 0x31b429fd -[UIWindow _sendGesturesForEvent:] + 772 24 UIKit 0x31b423ab -[UIWindow sendEvent:] + 666 25 UIKit 0x31b17d79 -[UIApplication sendEvent:] + 196 26 UIKit 0x31b16569 _UIApplicationHandleEventQueue + 7114 27 CoreFoundation 0x2f359f1f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 12 28 CoreFoundation 0x2f3593e7 __CFRunLoopDoSources0 + 204 29 CoreFoundation 0x2f357bd7 __CFRunLoopRun + 628 30 CoreFoundation 0x2f2c2471 CFRunLoopRunSpecific + 524 31 CoreFoundation 0x2f2c2253 CFRunLoopRunInMode + 106 32 GraphicsServices 0x33fd02eb GSEventRunModal + 138 33 UIKit 0x31b77845 UIApplicationMain + 1136 34 White 0x000dcf27 main (main.m:8) 35 libdyld.dylib 0x3a02eab7 start + 0 

这里是我用来创build精灵的代码,当另一个被点击时显示。 再次,这不会发生在除了A7设备而不在iPhone上。 另外,这个相同的代码片段用于做其他精灵完全相同的事情,并不会在这些崩溃。

 if ([touchedSprite.name isEqualToString:@"Sad"]) { // Create the crop node if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { cropNode.position = CGPointMake(touchedSprite.position.x - 120, CGRectGetMinY(self.view.frame)); } else cropNode.position = CGPointMake(touchedSprite.position.x - 120 * IPHONERATIO, CGRectGetMinY(self.view.frame) - 20); SKSpriteNode *sadSprite = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"SadSprite"]]; [sadSprite setName:@"sadSprite"]; [cropNode addChild:sadSprite]; sadSprite.position = CGPointMake(sadSprite.position.x, sadSprite.position.y + sadSprite.size.height / 2); SKSpriteNode *maskedImage = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"SadSpriteMask"]]; [cropNode setMaskNode:maskedImage]; [self addChild:cropNode]; NSArray *slurpSounds = @[@"sadSprite01.caf", @"sadSprite02.caf", @"sadSprite03.caf"]; // Keep the sadSprite in the same position in relation to the egg [sadSprite runAction:[SKAction moveByX:0 y:-sadSprite.size.height duration:0.6]]; // Move the sadSprite into position [cropNode runAction:[SKAction moveByX:0 y:sadSprite.size.height duration:0.6] completion:^{ [cropNode runAction:[SKAction playSoundFileNamed:slurpSounds[self.toolSoundNumber] waitForCompletion:YES] completion:^{ [sadSprite runAction:[SKAction moveByX:0 y:sadSprite.size.height duration:0.6] completion:^{ [sadSprite removeFromParent]; }]; [cropNode runAction:[SKAction moveByX:0 y:-sadSprite.size.height duration:0.6] completion:^{ [cropNode removeFromParent]; }]; }]; }]; } 

谢谢。

经过一些试验和错误,我跟踪了这​​一切,其中的顶部,底部,左侧或右侧的片大小为0.我会说这是iOS上的一个错误。 尝试添加更多的填充图像,以便您的切片不会触及边缘。