2012-03-07 63 views
1

我已經子類CCSprite和我的課,名爲汽車,inits這樣的:Cocos2D iPhone - 對象發送過多次autorelease?

+(Cars *) carWithNumber:(int)number COLOR:(int)color SHAPE:(int)shape { 
    return [[[Cars alloc] initWithNumber:number COLOR:color SHAPE:shape] autorelease]; 
} 

-(id) initWithNumber:(int)number COLOR:(int)color SHAPE:(int)shape { 

    self = [self init]; 

    if (self) { 
     self.texture = [self createTextureWithNumber:number COLOR:color SHAPE:shape]; 
    } 

    return self; 
} 

然後我創建了一個汽車使用,例如,像這樣:

Cars *oneCar = [Cars carWithNumber:2 COLOR:3 SHAPE:5]; 
[self addChild:oneCar]; 

看起來完美,但如果我分析和Xcode的代碼,它指向該行

return [[[Cars alloc] initWithNumber:number COLOR:color SHAPE:shape] autorelease]; 

對象發送-autorelease過很多次 ?????????

我錯過了什麼?謝謝。

+1

該代碼對我來說看起來很好。你能把它減少到一個測試用例並把它放到網上嗎? – Jim 2012-03-07 14:29:59

回答

0

CCSprite是一個autoreleased,你不需要設置你的車autorelease。

+0

你是什麼意思?如果我正在分配,我必須autorelease。如果我從該行刪除autorelease,則Xcode會抱怨可能存在內存泄漏。 – SpaceDog 2012-03-07 13:49:06

1

您顯示的代碼顯示正確。要麼這不是實際的代碼,要麼這裏沒有顯示其他相關的上下文。你問題中的代碼都是正確的。