0

25個のオブジェクトを配列に格納しようとしています

for (int iy=0; iy<5; iy++) {
        for (int ix=0; ix<5; ix++) {

            TerrainHex *myObject = [[TerrainHex alloc] initWithName:(@"grassHex instance 10000") width:mGameWidth height:mGameHeight indexX:ix indexY:iy];
            myObject.myImage.y += 100;

            [TerrainHexArray addObject:myObject];

            [self addChild:(id)myObject.myImage];
        }
    }
    NSLog(@"Terrain array: %u", [TerrainHexArray count]);

ただし、ログはゼロとして返されます。

.hファイルに私が持っている

@property NSMutableArray *TerrainHexArray;

そして、私が持っている.mファイルに..

@synthesize TerrainHexArray;

私は誰かが以下に提案したことを試しました。

NSMutableArray *TerrainHexArray = [[NSMutableArray] alloc] init];

しかし、それは私に期待される識別子を言っている警告を与えているだけです。

4

2 に答える 2

0

TerrainHexArrayとは何ですか?配列のインスタンスではなく、クラス名のように見えます。可変配列を作成する場合は、アイテムを配列に追加できます。

NSMutableArray *hexArray = [[NSMutableArray] alloc] init];
for (int iy=0; iy<5; iy++) {
        for (int ix=0; ix<5; ix++) {

            TerrainHex *myObject = [[TerrainHex alloc] initWithName:(@"grassHex instance 10000") width:mGameWidth height:mGameHeight indexX:ix indexY:iy];
            myObject.myImage.y += 100;

            [hexArray addObject:myObject];

            [self addChild:(id)myObject.myImage];
        }
}
NSLog(@"Terrain array: %u", [hexArray count]);
于 2012-07-09T21:31:15.417 に答える
0

addObject呼び出しとNSLogを実行しているときに、TerrainHexArrayが存在しないことはほぼ確実です。誰かが提案した後にalloc/initを追加しようとしたと言います。これは、Objective-Cのオブジェクト管理を理解していないことを示しています。

コーディングを試みる前に、一歩下がって、Objective-Cに関する本を見つけ、少なくとも最初の数章(alloc / initなどの説明まで)を読むことをお勧めします。

ちなみに、インスタンス名には小文字を先頭にした識別子を使用し、型/クラス名には大文字を予約するのが標準のC ++ / Objective-Cコーディング手法(Microsoftを除く)です。

于 2012-07-09T22:57:10.590 に答える