天天看點

cocos2d-x學習之CCDictionary中的一個小問題cocos2d-x學習之CCDictionary中的一個小問題

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 ,如需轉載請自行聯系原作者

繼續閱讀