我开始了一个非 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:retain 方法是否泄漏了任何内存?
也许我应该以覆盖的方法释放它-(void)onExit
?