2013年2月6日水曜日

【cocos2d】nodeメソッドは独自に作成したinitメソッドではautoreleaseされたオブジェクトを返してくれない

今回はnodeメソッドについて。

このnodeメソッドは、initメソッド実行の際、初期化・autoreleaseされたオブジェクトを返してくれる便利なメソッドですが、独自に作成したinitメソッドではそれを行ってくれません

独自に作成したinitメソッドで初期化、autoreleaseされたオブジェクトを返させたい場合

自身を初期化、autoreleaseするようにメソッドで定義してあげる必要があります。

以下例です。

layerWithNumberId:(NSInteger)numberIdという初期化メソッドの場合です。
//.h
+(id)layerWithNumberId:(NSInteger)numberId;

//.m
+(id)layerWithNumberId:(NSInteger)numberId
{
    return [[[self alloc]initWithSceneId:numberId]autorelease];
}

-(id)initWithSceneId:(NSInteger)numberId
{
    //色々やる

    return self;
}

自身を初期化し、autoreleaseさせて返しています。

0 件のコメント:

コメントを投稿