Animation NSMutableArray在添加对象时崩溃应用程序

Animation NSMutableArray在添加对象时崩溃应用程序,animation,crash,cocos2d-iphone,Animation,Crash,Cocos2d Iphone,我在MacOSX10.6.8上使用带有Cocos2D的Xcode 4。我试图使用一个精灵表的动画。这是我的代码: [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"scrollAnimation.plist"]; CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"scrollAnimation.png"]; [s

我在MacOSX10.6.8上使用带有Cocos2D的Xcode 4。我试图使用一个精灵表的动画。这是我的代码:

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"scrollAnimation.plist"];
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"scrollAnimation.png"];
[self addChild:spriteSheet];

NSMutableArray *animFrames = [NSMutableArray array];

for(int i = 0; i < 10; i++) {
    [animFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [NSString stringWithFormat:@"scroll%d.png", i]]];
}

self.scrollAnim = [CCAnimation animationWithFrames:animFrames delay:0.05f];

self.scroll = [CCSprite spriteWithSpriteFrameName:@"scroll0.png"];
_scroll.position = ccp(_winSize.width*1.5, _winSize.height*1.5);
[spriteSheet addChild:_scroll]; 
[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@“scrollAnimation.plist”];
CCSpriteBatchNode*spriteSheet=[CCSpriteBatchNode batchNodeWithFile:@“scrollAnimation.png”];
[自添加子项:精灵表];
NSMutableArray*animFrames=[NSMutableArray];
对于(int i=0;i<10;i++){
[animFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache]spriteFrameByName:[NSString stringWithFormat:@“滚动%d.png”,i]];
}
self.scrollAnim=[cAnimation animationWithFrames:animFrames delay:0.05f];
self.scroll=[CCSprite SpriteWithPriteFrameName:@“scroll0.png”];
_scroll.position=ccp(_-winSize.width*1.5,_-winSize.height*1.5);
[spriteSheet addChild:_滚动];
这在模拟器中可以正常工作,但当我构建设备时,它崩溃了。我已经把范围缩小到将对象添加到数组中。如果我在for循环之前注释掉所有内容,那么只需添加spriteFrameByName部分,就可以了。但当我尝试将其放入阵列时,应用程序会在设备上崩溃


有什么帮助吗?

这种行为最有可能的原因是你的应用程序占用了它所有的内存,而操作系统会杀死它。我这么说是因为在这种情况下,你不会从崩溃日志中得到任何提示是非常典型的,当你的应用程序在模拟器中工作而不是在设备中工作时也是典型的

因此,为了调查这个问题,我首先要检查在崩溃之前是否有内存警告跟踪(如果covos2d启用了跟踪)。这将是一个明确的迹象


事实上,当您收到同样导致崩溃的内存警告时,还有第二种可能的结果。您的应用程序收到内存警告(查看cocos2d跟踪);你的纹理缓存会被清空,因此当你尝试使用你认为预缓存的纹理时,应用程序会崩溃。但在这种情况下,错误将更加详细。如果您认为问题与此相关,请查看以下帖子:

我发现在模拟器中工作但在设备上不工作的原因之一是文件名键入错误。我会检查以确保scrollAnimation.plist的名称不是真正的scrollAnimation.plist或scrollAnimation.plist,与scroll0.png的名称相同,它不是真正的scroll0.png。您没有任何关于崩溃的错误消息吗?此时堆栈跟踪是什么样子的?由于某些原因,在我的设备上进行测试时,我无法获得任何错误消息。不过,它在模拟器上工作得很好,所以我没有在那里得到任何错误。