我有一個NSObject集合,我希望將其存儲在運行時生成的二維數組中。在C#中,我只是使用一些友好的通用容器,但不太確定在Objective-C中用於iphone開發的最佳方式。目標C中的2D陣列
我猜NSMutableArray不是最好的路線。我不需要數組的增長,當我的網格管理器被創建時,我會知道我想要的大小,但是網格將以運行時高度和寬度構建。
我應該沿着'NSObject ** gridObjects = alloc ...'的方向做些什麼嗎?
我有一個NSObject集合,我希望將其存儲在運行時生成的二維數組中。在C#中,我只是使用一些友好的通用容器,但不太確定在Objective-C中用於iphone開發的最佳方式。目標C中的2D陣列
我猜NSMutableArray不是最好的路線。我不需要數組的增長,當我的網格管理器被創建時,我會知道我想要的大小,但是網格將以運行時高度和寬度構建。
我應該沿着'NSObject ** gridObjects = alloc ...'的方向做些什麼嗎?
您可以隨時使用Objective-C的純C的東西(我不建議這樣做,除非你有很好的理由):
NSObject** *twoDArray = malloc(sizeof(NSObject**) * rows);
for (i = 0; i < rows; ++i)
twoDArray[i] = malloc(sizeof(NSObject*) * cols);
要調整每個塊,你可以使用realloc
(如果你甚至需要)。使用後請勿忘記free
。
如果你要存儲指針在二維數組,你將不得不使用:
NSObject ***gridObjects
我只想用的的NSArray對象(2D)一的NSArray。
這很有效,我將它作爲我班的一個屬性,但我在分配值時遇到了問題。我用Tile類型創建它。 Tile * tile = [[Tile alloc] init]; self.grid [x] [y] = tile; 我有錯誤「Incompat類型在賦值」 – 2009-08-23 03:37:51
啊,算出來。需要瓷磚*** – 2009-08-23 03:56:21
請小心使用此解決方案,因爲它與垃圾收集不兼容。可以使用NSAllocateCollectable來解決這個問題,但我也推薦NSArray的NSArray。 在這裏編寫一個類別方法來訪問元素可能不錯。 – 2009-08-23 04:50:54