Ios -(id)init上的Cocos2D崩溃

Ios -(id)init上的Cocos2D崩溃,ios,objective-c,cocos2d-iphone,Ios,Objective C,Cocos2d Iphone,我有一个包含两层的场景。一个名为BackgroundLayer,另一个名为GameplayLayer。背景层如下所示: -(id) init{ self = [super init]; if(self != nil){ CCSprite * backgroundImage; if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ backgroundImage = [CCSprite spriteWith

我有一个包含两层的场景。一个名为BackgroundLayer,另一个名为GameplayLayer。背景层如下所示:

-(id) init{
self = [super init];
if(self != nil){
    CCSprite * backgroundImage;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
        backgroundImage = [CCSprite spriteWithFile:@"backgroundr.png"];

    }
    else{
        backgroundImage = [CCSprite spriteWithFile:@"background.png"];
    }

    CGSize screenSize = [[CCDirector sharedDirector] winSize];
    [backgroundImage setPosition:CGPointMake(screenSize.width/2, screenSize.height/2)];
    [self addChild:backgroundImage];

}
return self;}
-(id) init{
    self = [self init];
   if( self != nil){

        }

    return self;
}

很好用。但问题是,GameplayLayer导致游戏崩溃。 GameplayLayer如下所示:

-(id) init{
self = [super init];
if(self != nil){
    CCSprite * backgroundImage;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
        backgroundImage = [CCSprite spriteWithFile:@"backgroundr.png"];

    }
    else{
        backgroundImage = [CCSprite spriteWithFile:@"background.png"];
    }

    CGSize screenSize = [[CCDirector sharedDirector] winSize];
    [backgroundImage setPosition:CGPointMake(screenSize.width/2, screenSize.height/2)];
    [self addChild:backgroundImage];

}
return self;}
-(id) init{
    self = [self init];
   if( self != nil){

        }

    return self;
}
游戏场景也是这样:

-(id) init{
self = [super init];
if(self != nil){
    BackgroundLayer * backgroundLayer = [BackgroundLayer node];
    [self addChild:backgroundLayer z:0];

    GameplayLayer * gameplayLayer = [GameplayLayer node];
    [self addChild:gameplayLayer z:5];

}
return self;
}


我真的看不出有什么问题。但是如果我删除-(id)init,它就不会崩溃<有什么想法吗?
以下是日志的最后几行:


self=[self init]Gameplayer
中的code>将永远重复出现。应该是
self=[super init]

self=[self init]Gameplayer
中的code>将永远重复出现。应该是
self=[super init]

有些场景需要使用
[self init]
,但它们很少。我希望Xcode对类似的递归函数给出更多的警告。有些情况下,您需要使用
[self init]
,但它们很少。我希望Xcode对类似的递归函数给出更多警告。