2012-07-09 67 views
0

我试图存储在数组中存储对象

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]); 

日志25个对象是回来了零,但。

在.h文件我已经

@property NSMutableArray *TerrainHexArray; 

而在.m文件我..

@synthesize TerrainHexArray; 

我只是想什么的人以下建议,这是...

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

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

+3

的[无法项目添加到一个NSMutableArray伊娃(http://stackoverflow.com/questions/7125326/cannot-add-items-to-an-nsmutablearray-ivar),[NSMutableArray的ADDOBJECT可能重复](http://stackoverflow.com/questions/3683761/nsmutablearray-addobject-not-affecting-count)和[NSMutableArray addObject:不工作](http://stackoverflow.com/questions/1827058/nsmutablearray-addobject-不工作),[我已经给你]的链接(http://stackoverflow.com/questions/11401368/storing-pointers-to-objects-in-array-in-objective-c#comment15035378_11401368)。 – 2012-07-09 21:21:41

+0

它不会让我回复最后一个问题中的任何帖子,所以我不得不开始另一个帖子,这似乎也是一个单独的问题。 – Phil 2012-07-09 22:02:25

+1

@Phil无论如何,我会给你100:1,问题是你没有真正创建一个数组,因为Josh发布。你创建一个的尝试也被打破;你声明一个与实例变量名称相同的局部变量,所以本地变量掩盖了实例变量。哦,你不小心在你的帖子中输入了一个']',但我确定这不是在这里,也不是在那里。 – Tommy 2012-07-09 22:27:01

回答

0

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

我建议你退后一步,在Objective-C上找到一本书,并且在尝试更多编码之前,至少阅读前几章(通过讨论alloc/init等)。顺便提一句,它是标准的C++/Objective-C编码实践(微软除外),它使用标识符和前导小写字母作为实例名称,为类型/类名保留前导上限。不影响计数:

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]); 
+0

我已经在.m文件中合成了TerrainHexArray;这在.h文件中@property NSMutableArray * TerrainHexArray; – Phil 2012-07-09 22:03:43

+2

你在哪里创建数组?如果它是数组实例是零,那么addObject将什么都不做,计数将始终返回0。 – 2012-07-09 22:44:33