2012-07-09 151 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