Я пытаюсь перезагрузить текущую сцену, и произойдет init
, затем dealloc
.получить текущую сцену возвращается NULL?
Я хочу иметь условие на dealloc, чтобы вернуться назад, если он вызвал из текущей сцены.
я пытался это:
if ([[[CCDirector sharedDirector] runningScene] getChildByTag:16])
return;
и
[[[CCDirector sharedDirector] runningScene] isKindOfClass:[HelloWorldLayer class]]
и дает мне NULL, и условие не истинно.
Почему?
моя сцена выглядит следующим образом:
+(CCScene *) scene
{
// 'scene' is an autorelease object.
CCScene *gameScene = [CCScene node];
// 'layer' is an autorelease object.
HelloWorldLayer *layer = [HelloWorldLayer node];
layer.tag=16;
// add layer as a child to scene
[gameScene addChild: layer];
// return the scene
return gameScene;
}
, как я могу устранить dealloc, когда я только обновить сцену ??
не уверен, что я понимаю ваш вопрос полностью, однако: нет никакого способа, чтобы прервать dealloc - это один из способов поездки, это происходит после того, как ваш объект был освобожден. Вам необходимо предотвратить, чтобы ваш объект (ы) был освобожден в первую очередь. – nielsbot
Я не думаю, что это правда. return on dealloc выйдет из этой функции. – Curnelious
Нет, объект будет освобожден. Фактически, когда dealloc называется runtime, вы просто можете освободить объекты, которые вы сохраняете, но он освободит ваш объект, когда dealloc закончит. Поэтому, когда вы вызываете возврат, вы в основном говорите ему: это нормально, вы можете освободить этот объект сейчас. – sch