2013年1月26日土曜日

CCArrayの再帰処理


再帰についてのメモ。
CCArrayのオブジェクト中にCCArrayが含まれる場合、どんどん下層arrayまで入り込んでいって、最終的に配列でないオブジェクトにたどり着くまで入り込んでいき、処理を実行する、というもの。
便利。
以下のコードは、Kobold2dの開発者さんによるもの。

Recursion is your friend.
-(void) recurseIntoArray:(CCArray*)array
{
    for (id item in array)
    {
        if ([item isKindOfClass:[CCArray class]])
        {
             [self recurseIntoArray:(CCArray*)item];
        }
        else
        {
             NSLog(@"item: %@", item);
        }
    }
}
Just start the iteration anywhere with the root array:
[self recurseIntoArray:rootArray];
Worth mentioning: CCARRAY_FOREACH is no longer necessary, at least in cocos2d 1.1 and 2.0 you can just use regular fast iteration with for. May also work in cocos2d 1.0.1, I think I used fast enumeration there as well.

0 件のコメント:

コメントを投稿