NSArray可能导致应用程序崩溃?

时间:2014-06-11 00:58:30

标签: crash nsarray sprite-kit

我有一个方法,从数组中选择一个随机精灵节点放在屏幕上。我的应用程序崩溃了。这是错误消息的片段:

  

* 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFConstantString decodeObjectForKey:]:无法识别的选择器发送到实例0x47b4'

这是我写出来的方法。

-(SKSpriteNode *) gamePieces {

NSArray *things = [NSArray arrayWithObjects: @"piece1", @"piece2", @"piece3", nil];

int r = arc4random () % [things count];

SKSpriteNode *randomObject = [[SKSpriteNode alloc] initWithCoder:[things objectAtIndex:r]];



return randomObject;
}

关于问题是什么的任何想法?

1 个答案:

答案 0 :(得分:0)

正如@HotLicks和@ LearnCocos2d已经提到的那样,-initWithCoder:在这里不合适。从头开始创建新的SKSpriteNode通常使用其中一个指定的初始值设定项(+spriteNodeWithColor:size:+spriteNodeWithImageNamed:spriteNodeWithTexture:)完成。假设您只想创建一个带有随机图像的SKSpriteNode,请查看以下代码。

- (SKSpriteNode *) randomGamePiece {
  NSArray *filename = [NSArray arrayWithObjects: @"piece1", @"piece2", @"piece3", nil];
  int r = arc4random () % [things count];

  NSString * randomFilename = [things objectAtIndex:r];
  SKSpriteNode *randomObject = [SKSpriteNode spriteWithImageNamed:randomFilename];

  return randomObject;
}

我全心全意地建议浏览Sprite Kit Programming Guide,其中包含许多有用的新片段和中级Sprite Kit程序员片段和指针。