티스토리 뷰
개발을 하다보면 한 객체가 다른 객체를 자식으로 가지는 계층 구조를 많이 만들게 되는데 이 계층화된 객체를 메모리에서 삭제(remove)시키려면 최상위 객체만 부모 레이어로부터 remove시키면 된다.
임의로 최상위 객체의 소멸자에서 removeAllChildren()같은 함수를 추가하면 나중에 레이어를 삭제할 때 문제가 발생할 수 있다.
문제 발생 시나리오
레이어 A에 Sprite객체 head와 SpriteBatchNode headBatch, bodyBatch가 추가되어 있고, head는 자식으로 body와 arm을 가지고 있다.
이 때 arm과 body의 이미지는 head이미지를 가지고 있는 plist와 다른 plist에 있으므로 객체 head를 생성할 때 bodyBatch를 전달하여 body와 arm을 sprBatch에 추가시킨다.
( head의 소멸자에는 자신의 자식을 모두 remove시키는 removeAllChildren() 함수가 작성되었다. )
스테이지 변경을 위해 레이어 A를 scene으로부터 remove시킨다.
문제 : head의 소멸자가 호출되기 전에 엔진으로 부터 head의 자식을 제거하는 프로세스가 호출되기 때문에 removeAllChildren()함수에서 문제가 발생한다.
'Programming > Cocos2d-x' 카테고리의 다른 글
cocos2d-x Reference : 스케줄(Schedule) (0) | 2015.09.29 |
---|---|
cocos2d-x Reference : 렌더 텍스처(RenderTexture) (0) | 2015.09.02 |
cocos2d-x Reference : 파티클 블랜딩(Particle Blend) 종류 (0) | 2015.08.05 |
Shader : 모션 블러(Motion Blur) (0) | 2015.07.16 |
cocos2d-x Reference : 커스텀 셰이더(Custom Shader) (2) | 2015.07.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- database
- Cocos2d-x
- 수학
- Git
- SwiftUI
- 알고리즘
- Spring
- game
- machine learing
- 자료구조
- winsock
- swift
- 드라마
- JSP
- mongoDB
- C
- SOCKET
- C/C++
- ue4
- 데이터베이스
- C++
- DesignPattern
- SHADER
- ios
- OS
- 운영체제
- scala
- Java
- 국내여행
- rxswift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함