在目标c中将对象存储在数组中

时间:2012-07-09 21:06:56

标签: objective-c

我正在尝试在数组中存储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];

但是它只是给了我一个警告说预期的标识符。

2 个答案:

答案 0 :(得分: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]);

答案 1 :(得分:0)

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

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

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