Священный вопрос, бэтмен, в следующий раз попробуй использовать пунктуацию и пробел!
Во-первых, это new
вещь, о которой вы говорите, это C ++ ism. Вы не можете создать экземпляр Objective-C с помощью оператора new
. Прочтите этот замечательный документ , чтобы глубже понять Objective-C.
Теперь, пытаясь разобрать ваш вопрос, это звучит так:
вы пытались создать 1000 BOOL *
с, позвонив malloc()
1000 раз?
... и вы пришли к выводу, что относительно медленное выделение 1000 объектов является проблемой?
Здесь есть более фундаментальная архитектурная проблема. А именно, что вы пытаетесь смоделировать до такого мелкозернистого уровня с отдельными выделениями, независимо от того, являются ли они BOOL *
s, объекты Objective-C являются чем-то еще.
Минимальный размер выделения, который возвращает malloc()
, обычно составляет 16 байтов. Этот однобитовый BOOL (на самом деле это 8-битный тип; нет выделения одного бита) займет в 16 раз больше памяти, чем должен.
Вам лучше смоделировать вашу Grid как отдельный экземпляр класса Grid, который содержит все данные. Если вам нужна сетка 10х10 с флагом в каждой точке, просто myBools = malloc(sizeof(BOOL) * 10 * 10)
. Затем любой BOOL может быть извлечен с помощью myBools[col + (row * 10)]
, то есть тривиально отобразить 2D (или 3D) сетку ганка в линейный массив.