转载自:http://www.cocoachina.com/bbs/read.php?tid=17232&page=2
cocos2d0.99.x的改动之一,简单说
CCSprite calls:
-(id) initWithXXX {
self =[self init];
}
所以在你的ccsprite子类的init方法中不要调用除[super init]之外的任何initWithXXX方法,否则就会出现递归的执行init的问题。
正确代码:
@implementation OrbSprite
-(id) init
{
if( (self=[super init]) )
{
//此处可处理一些成员变量,但不要调用任何initWithXXX;
}
return self;
}
@end
///
id sub = [OrbSprite initWithFile:@"xxx"];// <--- OrbSprite#init will be called.不用写成[[OrbSprite alloc] init]
具体可见issue778:http://code.google.com/p/cocos2d-iphone/issues/detail?id=778