我对 Objective-C 比较陌生,我开始学习 SneakyInput。我将它添加到我正在制作的小应用程序(启用了 ARC)中,当我运行该应用程序时它就崩溃了。我又试了一次,为非 ARC 编写偷偷摸摸的输入,它工作得很好。
这是 ARC 版本(启用了 ARC),它崩溃了
- (void)initJoystick
{
SneakyJoystickSkinnedBase *joystickBase;
joystickBase.backgroundSprite = [CCSprite spriteWithFile:@"Icon-Small@2x.png"];
joystickBase.thumbSprite = [CCSprite spriteWithFile:@"Icon-Small.png"];
joystickBase.joystick = [[SneakyJoystick alloc] initWithRect: CGRectMake(0, 0, 128, 128)];
joystickBase.position = ccp(55, 55);
[self addChild:joystickBase];
}
- (id)init
{
if( (self=[super init]) )
{
[self initJoystick];
}
return self;
}
@end
这是非 ARC 版本,不会崩溃
- (void)initJoystick
{
SneakyJoystickSkinnedBase *joystickBase = [[[SneakyJoystickSkinnedBase alloc] init] autorelease];
joystickBase.backgroundSprite = [CCSprite spriteWithFile:@"Icon-Small@2x.png"];
joystickBase.thumbSprite = [CCSprite spriteWithFile:@"Icon-Small.png"];
joystickBase.joystick = [[SneakyJoystick alloc] initWithRect: CGRectMake(0, 0, 128, 128)];
joystickBase.position = ccp(55, 55);
[self addChild:joystickBase];
leftJoystick = [joystickBase.joystick retain];
}
-(id) init
{
if( (self=[super init]) )
{
[self initJoystick];
}
return self;
}
@end
我想继续使用应用程序的其余部分在 ARC 中,所以我想知道是否有人可以告诉我如何解决这个问题,以免它崩溃。对不起,如果非常noobie问题。
这是启用 ARC 时我在输出中收到的错误消息
2013-06-29 20:49:15.724 joystick[2135:12c03] *** Assertion failure in -[HelloWorldLayer addChild:],
/Users/monagros/Desktop/Stuff/Cocos2D/apps/joystick/joystick/libs/cocos2d/CCNode.m:362