2012-06-14 4 views
0

Я пытаюсь построить несколько сцен в моем одиночном initmanager GameManager.ccscene arc и autorelease

Сцена создается с помощью

- (id)init 
    { 
     self = [super init]; 
     if (self) {  // 'mainScene' is an autorelease object. 
     mainScene = [CCScene node]; 
... 
    } 

GameManger имеет сильную ссылку на mainScene:

@interface GameManager : NSObject 
{ 
    CCScene* mainScene; 
} 

Но если я пытаюсь нажать на сцену позже

[[CCDirector sharedDirector] pushScene:mainScene]; 

Я получаю EXC_BAD_ACCESS

Если я создаю и немедленно нажимаю, то все работает. Должна ли ссылка по умолчанию __strong сохранять выделенный объект?

Заранее спасибо за любую помощь ....

ответ

0

Фигурного это ... [CCScene узел] является методом фабрики удобства, что делает: [[[само Alloc] инициализация] autorelease];

, но так как я использую дуги ... Я не хочу, - я не хочу

mainScene = [[CCScene alloc]init]; 

вместо

mainScene = [CCScene node]; 
+1

Ни делает никакой разницы, когда вы используете ARC. [Узел CCScene] и [[CCScene alloc] init] будут работать одинаково с ARC (хотя технические данные низкого уровня показывают несколько разные процедуры управления памятью). Убедитесь, что вы не попадаете в ловушку нажатия текущей сцены, которая будет разбиваться. – LearnCocos2D

+0

Я определенно не нажимал бегущую сцену - и проверял вызов [[[[CCScene alloc] init] autorelease]; сбоев и [[CCScene alloc] init] не ... – OptimisticMonkey

Смежные вопросы