我为我的 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;
}
但由于某种原因,Sprite 从未出现。经过一番调试,我看到当我从 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正在释放它应该调用它)......