cocos2d:CCSpriteのインスタンスはrelease必要か?
2012/11/27
category: cocos2d | tag: cocos2d, Objective-C | no comments
Objective-Cのメモリ管理が、なかなか理解できていません。
cocos2d-iphone2.0は「cocos2d is ARC compatible.」と書かれているものの、標準のテンプレートで作成したプロジェクトがARC対応になるわけじゃない。あとから手動でゴニョゴニョする必要がある模様。
疑問:
以下のCCSpriteのインスタンス(sprite)は、deallocでreleaseする必要があるのか?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
@implementation SceneTitle { CCSprite *sprite; } - (id) init { if (self = [super init]) { sprite = [CCSprite spriteWithFile:@"Icon@2x.png"]; [sprite setPosition:ccp(160, 300)]; [self addChild:sprite]; } return self; } - (void) dealloc { [super dealloc]; } @end |
解答:
libs/cocos2dの中のファイルCCSprite.mの、spriteWithFile:が書かれている部分を見てみました。
1 2 3 4 |
+(id)spriteWithFile:(NSString*)filename { return [[[self alloc] initWithFile:filename] autorelease]; } |
allocされて、initiWithFile:メソッドが呼ばれ、autoreleaseが指定されていました。
ということは…
APIのReferenceだけでなく、時にはソースを覗いてみるのも良いかもしれませんね。
コメントを残す
コメントを投稿するにはログインしてください。