cocos2d プロジェクトで ARC を有効にしました。
今、私は次のことを試みます:
BuildTowerMenu *menu = [BuildTowerMenu menuAtLocation:tileScreenPos];
[self addChild:menu];
そして BuildTowerMenu クラスでは:
+(id)menuAtLocation:(CGPoint)location {
return [[self alloc] initMenuAt:location];
}
-(id) initMenuAt:(CGPoint)location {
if (self = [super init]) {
self.position = location;
CCSprite *item1 = [CCSprite spriteWithFile:@"Icon.png"];
item1.position = location;
[self addChild:item1];
}
return self;
}
しかし、なぜかスプライトが現れません。少しデバッグした後、menuAtLocation から戻ったときに、CCSprite は BuildTowerMenu の子の配列にまだありますが、空です (ID のみを取得しました)。
実際に外部からスプライトを追加すると、それが機能し、スプライトが表示されます:
BuildTowerMenu *menu = [BuildTowerMenu menuAtLocation:tileScreenPos];
CCSprite *item1 = [CCSprite spriteWithFile:@"Icon.png"];
item1.position = location;
[menu addChild:item1];
[self addChild:menu];
ここで何が間違っていたのかについてのヒントはありますか?
PS: CCSprite の dealloc にブレークポイントを追加しましたが、これは決して呼び出されません (ARC がリリースしている場合は呼び出されるべきだと思います)...