CCArray의 소멸자에서 CCArray에 들어있는 모든 CCObject형을 전부 삭제해주고 메모리 해제를 해준다.
CCArray::~CCArray()
{
ccArrayFree(data);
}
/** Frees array after removing all remaining objects. Silently ignores NULL arr. */
void ccArrayFree(ccArray*& arr)
{
if( arr == NULL )
{
return;
}
ccArrayRemoveAllObjects(arr); //ccArray에 있는 모든 객체를 다 삭제
free(arr->arr);
free(arr);
arr = NULL;
}
CCNode 의 모든 객체들 addChilde및 removeChild를 할때 추가되는 객체들은
CCNode 안의 CCArray 멤버변수 m_pChildren 에 저장이 되고 삭제가 되는등 관리가 된다.
CC_PROPERTY_READONLY(CCArray*, m_pChildren, Children)
CCNode::~CCNode(void)
{
CCLOGINFO( "cocos2d: deallocing" );
unregisterScriptHandler();
CC_SAFE_RELEASE(m_pActionManager);
CC_SAFE_RELEASE(m_pScheduler);
// attributes
CC_SAFE_RELEASE(m_pCamera);
CC_SAFE_RELEASE(m_pGrid);
CC_SAFE_RELEASE(m_pShaderProgram);
CC_SAFE_RELEASE(m_pUserObject);
if(m_pChildren && m_pChildren->count() > 0)
{
CCObject* child;
CCARRAY_FOREACH(m_pChildren, child)
{
CCNode* pChild = (CCNode*) child;
if (pChild)
{
pChild->m_pParent = NULL;
}
}
}
// children 등을 전부 삭제한다->CCArray가 삭제되고 CCArray의 소멸자가 생성되므로 위에 있는 것들이 실행되고
//모든 객체들이 다 삭제된다.
CC_SAFE_RELEASE(m_pChildren);
}
'잡다한것들전부 > 팁' 카테고리의 다른 글
| cocos2d-x 멀티 터치 처리하기 (0) | 2014.01.14 |
|---|---|
| autoRelease 및 retain() , release(), retainCount() (0) | 2014.01.13 |
| CCNode 및 CCArray 의 메모리 관리 (0) | 2014.01.13 |
| cocos2d-x multi-resolution (0) | 2014.01.13 |
| cocos2d-x 스크롤 테이블뷰 예제 소스 (0) | 2014.01.13 |
| cocos2d-x CCString 분리후 CCArray 에 넣기( 문자열 분리하기) (0) | 2014.01.13 |
Trackback 0 And
Comment 0


