ARC 以外の cocos2d プロジェクトを開始しました。
メソッド内でEXC_BAD_ACCESS
プライベートCCLabelBMFont
メンバーにアクセスしようとすると、エラーがスローされます。しかし、どういうわけか、メソッドでアクセスできません。
その子にアクセスするにはどうすればよいですか?
以下に簡単な例を示します。performSelector:withObject:afterDelay:
title
doSomeInit
doSomething
ああ
@interface IntroLayer : CCLayer {
}
@property (nonatomic,strong) CCLabelBMFont *_title;
@end
これも試してみました...運が悪い。 ああ
@interface IntroLayer : CCLayer {
CCLabelBMFont *_title;
}
午前
@implementation IntroLayer
@synthesize _title;
.
.
- (void)doSomeInit {
_title = [CCLabelBMFont labelWithString:@"Test Label" fntFile:"blah.fnt"];
[self performSelector:@selector(doSomething) withObject:nil afterDelay:5];
}
- (void)doSomething {
int count = 0;
for (CCSprite* la in _title.children) { //<<<<<EXC_BAD_ACCESS ERROR THROWS HERE!!!
la.opacity = 0;
}
[self addChild: _title];
}
次の関連する質問はこれです:
私は変更しました
_title = [CCLabelBMFont labelWithString:@"Test Label" fntFile:"blah.fnt"];
に
_title=[CCLabelBMFont labelWithString:@"Test Label" fntFile:"blah.fnt"];
[_title retain]; //this fixes EXC_BAD_ACCESS error.
ただし:
質問 2: 保持メソッドでメモリ リークが発生していませんか?
たぶん、オーバーライドされた-(void)onExit
メソッドでリリースする必要がありますか?