-
Notifications
You must be signed in to change notification settings - Fork 0
memory_management
pjc0247 edited this page Oct 23, 2014
·
1 revision
모든 오브젝트의 처음 레퍼런스 카운트는 1이다.
다른 오브젝트에서 이 오브젝트를 사용하게 될 때 카운터 1 증가.
- obj->retain(); 호출시 레퍼런스 카운트 1 증가됨.
addChild(obj); /* obj의 레퍼런스 카운트 +1 */obj->runAction(action); /* action의 레퍼런스 카운트 +1 */
반대로 더 이상 사용하지 않게 될 때 1 감소.
- obj->release(); 호출시 레퍼런스 카운트 1 감소됨.
removeChild(obj); /* obj의 레퍼런스 카운트 -1 */obj->stopAction(action); /* action의 레퍼런스 카운트 -1*/Object::create로 생성된 오브젝트들은 cocos2d의 autorelease-pool에 등록된다.
autorelease-pool에 등록된 오브젝트들은 이번 프레임이 끝나고 전부 release된다.
( 레퍼런스 카운트가 1 줄어드는 것 뿐이지 무조건 delete아님 )
만약 오브젝트를 만들었는데, 당장 붙잡아 주는(addChild 등) 오브젝트가 없으면, 프로그래머가 직접 붙잡아야(retain) 한다.
obj->retain();반대로 이 오브젝트가 쓸모 없어지는 시점에는 프로그래머가 직접 release해주어야 한다.
obj->release();