我收到来自视网膜迷你和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
这是我用来创建在点击另一个时显示的精灵的代码。除了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 :(得分:8)
经过一些试验和错误后,我将其追踪到切片图像,其中顶部,底部,左侧或右侧切片的大小为0.我会说这是iOS上的一个错误。尝试为图像添加更多填充,以使切片不会碰到边缘。