多维原始整数数组

时间:2016-04-18 10:39:01

标签: objective-c primitive-types

我知道这段代码不起作用,但我怎么能真正正确地初始化它?:

NSUInteger highestModelID = 34605;
NSUInteger highestColorID = 328;
NSUInteger** modelColors[highestModelID][highestColorID] = malloc(highestModelID * highestColorID * sizeof(NSUInteger));

因此有2个动态深度。我有一个多维NSMutableDictionary的大量缓冲区,它会占用内存。我真的很想做这个原始的。

猜猜如果能够在更多的地方使用它来使用它会更加令人惊讶,因为在这些地方,Objective-C词典甚至NSMutableArray实际上都是矫枉过正的。随着时间的推移,我NSNumber使用golang的东西变得越来越烦恼,这在function RemoveAllHTMLCode($html) { require_once "PATH/htmlpurifier/library/HTMLPurifier.auto.php"; $config = HTMLPurifier_Config::createDefault(); $config->set('HTML.Allowed', ''); $purifier = new HTMLPurifier($config); return $purifier->purify($html); } 我过去常常是超亮的,突然使它成为减速的主要因素我的应用程序... ..

2 个答案:

答案 0 :(得分:2)

创建它的方式与创建NSArray的NSArray并没有什么不同。您需要首先分配NSUInteger *的数组,然后分配其每个元素。

NSUInteger  **modelColors;
modelColors = malloc(highestModelID * sizeof(NSUInteger*));
for (int i = 0; i < highestModelID; i++) {
    modelColors[i] = malloc(highestColorID * sizeof(NSUInteger));
}

答案 1 :(得分:2)

你需要这个:

NSUInteger* modelColors = malloc(highestModelID * highestColorID * sizeof(NSUInteger));

您可以这样使用:

NSUInteger getModelColor(int modelID, int colorID, int highestModelID,  NSUInteger* modelColors) {
    return modelColors[colorID * highestModelID + modelID];
}

void setModelColor(NSUInteger color, int modelID, int colorID, int highestModelID,  NSUInteger* modelColors) {
    modelColors[colorID * highestModelID + modelID] = color;
}

基本上这是一个2D数组,其中modelID为行编制索引,colorID对列进行索引(假设为行主要布局)。