2012-03-07 9 views
1

私はこのようなINITS、車の名前、CCSpriteと私のクラスをサブクラス化している: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の持つコードを分析する場合、それはオブジェクトが何回も-autorelease送っ言って、このライン

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

を指します?????????

私は何が欠けていますか?ありがとう。

+1

そのコードは私にとってうまく見えます。テストケースに減らしてオンラインにすることができますか? – Jim

答えて

0

CCSpriteは自動レリースされているため、車を自動解放するように設定する必要はありません。

+0

それはどういう意味ですか?もし私がそれを割り当てているなら、私は自動解放する必要があります。私がその行からautoreleaseを削除した場合、Xcodeはメモリリークの可能性について不平を言っています。 – SpaceDog

1

表示されたコードは正しく表示されます。これは実際のコードではないか、ここには示されていない他の関連するコンテキストがあります。あなたの質問のコードはすべて正しいです。

関連する問題