2009-08-23 72 views
0

我有一個NSObject集合,我希望將其存儲在運行時生成的二維數組中。在C#中,我只是使用一些友好的通用容器,但不太確定在Objective-C中用於iphone開發的最佳方式。目標C中的2D陣列

我猜NSMutableArray不是最好的路線。我不需要數組的增長,當我的網格管理器被創建時,我會知道我想要的大小,但是網格將以運行時高度和寬度構建。

我應該沿着'NSObject ** gridObjects = alloc ...'的方向做些什麼嗎?

回答

0

您可以隨時使用Objective-C的純C的東西(我不建議這樣做,除非你有很好的理由):

NSObject** *twoDArray = malloc(sizeof(NSObject**) * rows); 
for (i = 0; i < rows; ++i) 
    twoDArray[i] = malloc(sizeof(NSObject*) * cols); 

要調整每個塊,你可以使用realloc(如果你甚至需要)。使用後請勿忘記free

+0

這很有效,我將它作爲我班的一個屬性,但我在分配值時遇到了問題。我用Tile類型創建它。 Tile * tile = [[Tile alloc] init]; self.grid [x] [y] = tile; 我有錯誤「Incompat類型在賦值」 – 2009-08-23 03:37:51

+0

啊,算出來。需要瓷磚*** – 2009-08-23 03:56:21

+1

請小心使用此解決方案,因爲它與垃圾收集不兼容。可以使用NSAllocateCollectable來解決這個問題,但我也推薦NSArray的NSArray。 在這裏編寫一個類別方法來訪問元素可能不錯。 – 2009-08-23 04:50:54

3

如果你要存儲指針在二維數組,你將不得不使用:

NSObject ***gridObjects 

我只想用的的NSArray對象(2D)一的NSArray