Objective c 在objective c中以数组形式存储对象

Objective c 在objective c中以数组形式存储对象,objective-c,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];

我试图在一个数组中存储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]);
在我的.m文件中

@synthesize TerrainHexArray;
我只是尝试了下面有人的建议,那就是

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

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

什么是TerrainHeArray?它看起来像一个类名,而不是数组的实例。如果创建可变数组,则可以将这些项添加到数组中

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]);
NSMutableArray*hexArray=[[NSMutableArray]alloc]init];

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

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


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

可能与和的链接重复。它不允许我回复上一个问题中的任何帖子,因此我不得不启动另一个帖子,这似乎是另一个问题。@Phil,不管怎样,我给你10个0:1问题在于你没有像Josh发布的那样创建数组。你创建数组的尝试也失败了;你声明了一个与实例变量同名的局部变量,因此局部变量屏蔽了实例变量。哦,你在帖子中意外地键入了一个额外的']',但我相信这也不是问题这里也没有。我在.m文件synthesis TerrainHexArray中有这个;在.h文件@property NSMutableArray*TerrainHexArray中有这个;你在哪里创建数组?如果是数组实例为零,那么addObject将不做任何事情,计数将始终返回0。
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]);