하나의 SKNode에서 다른 SKNode로 SKSpriteNode를 이동하려고합니다. removeFromParent 메서드는 실제로 스프라이트를 할당 해제합니다. 스프라이트가 할당이 해제 된이 경우에SKNode간에 SKSpriteNode를 이동하는 방법
SKNode *node1 = [SKNode node];
SKNode *node2 = [SKNode node];
//[self addChild:node1];
//[self addChild:node2];
MySprite *sprite = [MySprite spriteNodeWithColor:[SKColor blueColor] size:CGSizeMake(30, 30)];
[node1 addChild:sprite];
[sprite removeFromParent];
[node2 addChild:sprite];
:이 코드 mySprite는 예를 들어
출력 문자열, 날 개체가 해제 된 것을 알 수 있도록하는 할당 해제의 사용자 정의 방법 SKSpriteNode의 서브 클래스입니다 . 나는 sprite에 대한 강력한 참조가 removeFromParent를 호출 한 후에도 살아 있어야한다고 생각했지만 그렇지 않습니다.하지만 [self addChild : node2]의 주석을 제거한 경우; 스프라이트의 할당이 해제되지 않았습니다.
저는 꽤 혼란 스럽습니다. removeFromParent가 객체를 할당 해제 한 경우 sprite는 nil이어야하며 상위 노드에 nil 노드를 추가 할 때 오류가 발생합니다. 그렇지 않니? 설명서에서는 removeFromParent : "수신 노드를 부모 노드에서 제거합니다."라고 말합니다. 하지만 여기서 메모리를 관리하는 방법에 대해서는 아무 것도 말하지 않습니다.
감사합니다. 그게 바로 범위였습니다. 스프라이트에 대한 인스턴스 변수를 만들었고 할당을 해제하지 않았습니다. – zago