void RecurseDestroy(CCObject * pObj) { if (pObj == NULL) return; if (pObj->isOfClass(CCObject::ClassOfCCDictionary)) { CCDictionary * pDict = (CCDictionary *)pObj; CCDictionary::const_iterator itDict = pDict->begin(); while(itDict != pDict->end()) { RecurseDestroy(itDict->second); itDict++; } pDict->erase(pDict->begin(), pDict->end()); V_SAFE_DELETE(pDict); } else if (pObj->isOfClass(CCObject::ClassOfCCArray)) { CCArray * pArray = (CCArray *)pObj; int iCount = (int)pArray->size(); for (int i = 0; i < iCount; i++) { RecurseDestroy((*pArray)[i]); } V_SAFE_DELETE(pArray); } else if (pObj->isOfClass(CCObject::ClassOfCCString)) { CCString * pString = (CCString*)pObj; V_SAFE_DELETE(pString); } else { V_SAFE_DELETE(pObj); } }