cocos2d-x開發中,資料操作自然是一個必須面對的問題。其中,這個引擎中内置了少數但是卻非常高效率的DS,
例如CCString, CCArray, CCDictionary等。本文要記錄的是CCDictionary使用過程的一個小問題。
問題描述:周遊一個字典。
開始時,我使用了如下想法:
CCArray* arrKey=m_pZombieDict->allKeys();
CCLog("CCArray.count:%d",arrKey->count());
CCObject* pObj = NULL;
CCARRAY_FOREACH(arrKey, pObj)
{
CCInteger* pKey =(CCInteger*)pObj;
if (pKey != NULL)
{
const CCString* pValue=m_pZombieDict->valueForKey(iTag);
//...............others omitted
但是,實際調試中卻發現直接調用allKeys()函數會導緻失敗,程式無法進行下去。我觀看了一下 CCDictionary的源碼,它也沒有使用上述方案
周遊一個字典。對于allKeys()函數的調用不是如上方法。時間關系先不細緻追究下去了。反正上述方案不行。通過CCDictionary的源碼及頭檔案CCDictionary.h,
發現了如下常用的(引擎推薦說更高效)方案:
CCDICT_FOREACH(m_pZombieDict, pElement)
int key = pElement->getIntKey();
CCString* pSprite = (CCString*)pElement->getObject();
// ......
}
有關使用上述周遊宏的使用細節,請參考頭檔案CCDictionary.h中的細緻說明。總之,這些源碼中提供了非常細緻的一些重要結構及函數的使用例子,VERY GOOD!
感謝cocos2d-x的作者!
本文轉自朱先忠老師51CTO部落格,原文連結:http://blog.51cto.com/zhuxianzhong/1531774 ,如需轉載請自行聯系原作者