0
현재 장면을 새로 고치려고하는데 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을 제거 할 수 ?? :
내 장면처럼 보인다
가 확실하지 내가 완전히 질문을 이해하지만하십시오 할당 해제를 중단 할 수있는 방법이 없다 - 당신의 객체가 해제 된 후 발생하는 편도입니다. 첫 번째 장소에서 물건이 나오지 않도록해야합니다. – nielsbot
나는 그게 사실이라고 생각하지 않는다. dealloc에서 반환하면 해당 함수가 종료됩니다. – Curnelious
아니요, 개체의 할당이 해제됩니다. 사실, dealloc이 호출 될 때 런타임은 단지 당신에게 당신이 보유하고있는 객체를 해제 할 기회를 주지만, dealloc이 끝나면 객체의 할당을 해제 할 것입니다. 따라서 리턴을 호출하면 기본적으로 그에게 알립니다. 이제는이 오브젝트를 할당 취소 할 수 있습니다. – sch