私は 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 を続行したいので、クラッシュしないようにこれを修正する方法を誰か教えてもらえないかと思っていました。非常に初心者の質問でしたら申し訳ありません。
これは、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