ラベル コレクション の投稿を表示しています。 すべての投稿を表示
ラベル コレクション の投稿を表示しています。 すべての投稿を表示

2013年1月26日土曜日

CCArrayでのint格納はcontainsObjectが上手くいかないらしい

cocos2dのCCArrayでint型整数を代入して、containsObjectで検査しようとしたところ、うまくいかない。

ググって、

http://blog.iphoneidiot.com/2012/06/ccarray-containsobject-does-not-work.html
から辿って、
http://www.cocos2d-iphone.org/forum/topic/12760
に行くと、

NSNumberは、CCArrayでcontainObjectに合ってない、というような記述。

うーん。

ということで、containsObjectのため、NSMutableSetを使ってみて、便利だった。

とりあえず、順番の関係ない数字のみの格納には、NSMutableSetを使っていこうと思う。

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.

2013年1月23日水曜日

CCArrayのドキュメント、とsortについて。

コレクションを使うことがこれから多くあるので、配列やSetについて学び中。

CCArrayについて、まずCocos2dであれば学ぶべし、と思い、以下のドキュメントを参照。
http://www.learn-cocos2d.com/api-ref/1.0/cocos2d-iphone/html/interface_c_c_array.html

Kobold2dの作者さんが、2010年にCCArrayとNSArrayの速度比較をした記事があり、
http://www.learn-cocos2d.com/2010/09/array-performance-comparison-carray-ccarray-nsarray-nsmutablearray
CCArrayで、insertObject:AtIndex:0 and removeObjectAtIndex:0を使った際には、NSArrayより断然遅かった、という記事が気になった。

その後2年は経っているので、改善されていると思うが。。

CCArray,ドキュメントを見る限り、いろいろな機能が備えられており、便利そう。
(個人的には、randomObject ()が便利そう。よく使います。)

ありがたく使用させて頂きます。

:::::::::::::::::::::::::::::::
と思ったら、
http://www.cocos2d-iphone.org/forum/topic/10202
ここに、sortの機能がない、ということが書かれていた。。
確かに、無さそう。
さて、どうするか。sortも使いたいのだが。

と思ったら、開発者さんのgithubで、sortのfunctionが書かれたものが。
https://github.com/cocos2d/cocos2d-iphone/blob/master-v2/cocos2d/Support/CCArray.m

ソースを確認したら、すでに実装されていますね。CCArray.h,.mに。
良かった。

https://github.com/ricardoquesada
この方、ありがたい方だ。。拝んでおこう。。