Cocos2d iphone CCARC和自动释放
我正试图在GameManager singleton init中构建一些场景 场景是通过以下方式创建的:Cocos2d iphone CCARC和自动释放,cocos2d-iphone,Cocos2d Iphone,我正试图在GameManager singleton init中构建一些场景 场景是通过以下方式创建的: - (id)init { self = [super init]; if (self) { // 'mainScene' is an autorelease object. mainScene = [CCScene node]; ... } GameManager强烈引用了mainScene: @i
- (id)init
{
self = [super init];
if (self) { // 'mainScene' is an autorelease object.
mainScene = [CCScene node];
...
}
GameManager强烈引用了mainScene:
@interface GameManager : NSObject
{
CCScene* mainScene;
}
但是如果我以后想用
[[CCDirector sharedDirector] pushScene:mainScene];
我的EXC\u访问权限不好
如果我创建并立即推送,那么一切都正常。默认的强引用不应该保持对象的分配吗
提前感谢您的帮助 找到了答案。。。[CCScene node]是一种方便的工厂方法,它可以: [[self alloc]init]autorelease] 但是因为我用的是arc…我不想要那个-我想要
mainScene = [[CCScene alloc]init];
而不是
mainScene = [CCScene node];
使用ARC时,两者都没有任何区别。[CCScene node]和[[CCScene alloc]init]将与ARC工作相同(尽管低级技术细节显示了略有不同的内存管理例程)。请确保您没有陷入推送当前正在运行的场景的陷阱,这将崩溃。我肯定没有推送正在运行的场景-并验证了调用[[[CCScene alloc]init]autorelease];崩溃,[[CCScene alloc]init]未。。。。