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

当您执行 addObject 调用和 NSLog 时,几乎可以肯定 TerrainHexArray 不存在。你说你在有人建议后尝试添加 alloc/init,这表明你不了解 Objective-C 中的对象管理。

我建议你退后一步,找一本关于 Objective-C 的书,并在尝试更多编码之前至少阅读前几章(通过 alloc/init 等的讨论)。

顺便说一句,标准的 C++/Objective-C 编码实践(Microsoft 除外)使用带有前导小写字符的标识符作为实例名称,为类型/类名称保留前导大写字母。

于 2012-07-09T22:57:10.590 回答
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 回答