我正在尝试在数组中存储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];
但是它只是给了我一个警告说预期的标识符。
答案 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除外)使用带有小写字母的标识符作为实例名称,为类型/类名保留前导上限。