2012-01-01 57 views
0

我正在使用二維數組作爲遊戲的地圖格式。地圖的水平長度不變,但垂直長度可以。正因爲如此,我認爲應該將C數組的效率用於實際的數據存儲,併爲容器使用NSMutableArray。但是,我不知道如何去做這件事。甚至可以將一個C數組存儲在一個NSArray中?我嘗試了各種方法,但似乎沒有任何工作。是否可以將一個C數組添加到NSArray?

+1

可能會有一些最大長度的數組將會/應該是?我在想,爲什麼不直接使用c數組呢? – andershqst 2012-01-01 21:41:36

回答

2

NSArray只存儲對象。您可以可能定義一個自定義的NSArray子類與一個int數組作爲數據存儲和特殊的方法來存儲整數,然後將它們(即,將整數轉換爲NSNumbers)爲NSArray的普通對象接口 - 儘管這是方式 overly複雜的大多數目的。但是對於普通的NSArray,你被對象卡住了。

+0

查克的答案是正確的,但這也可能是一個非常糟糕的主意。存儲C數組的方法要比使用自定義NSArray子類更簡單,並且要經歷裝箱/拆箱的開銷。 – 2012-01-03 20:50:59

+0

爲了清楚起見,我同意@KevinBallard這通常不是你想要做的事情。我可以想到你可能會遇到的一些情況,但通常不會。我認爲這很清楚,這是一個相當複雜的解決方案,只是爲了移動陣列,但我會編輯答案以使其更清楚。 – Chuck 2012-01-03 20:56:38

1

不,您只能在NSArray中存儲對象。你可以嘗試在那裏存儲一個NSMutableData,它保存支持你的C數組的字節,但這有些尷尬。

0

您可以使用一些C++ STL容器,如vector。這將具有良好的性能以及根據需要增長/收縮數組的接口。

相關問題