Массивы структур или собственные типы данных в Objective C

Я уже пару раз сталкивался с этой проблемой. В прошлый раз я хотел создать массив массивов (матрицу) BOOL. Я закончил тем, что инкапсулировал их в NSStrings, потому что, по-видимому, NSArray имеет только массивы объектов.

На этот раз снова нужен массив массивов, но уже CGPoints. Я собираюсь использовать их, чтобы рисовать изображения на экране. Есть ли способ создать массив CGPoints без того, чтобы они были объектами? Стоит ли мне вообще беспокоиться о накладных расходах памяти / производительности при наличии матрицы из 96 объектов?


person Craig    schedule 16.04.2009    source источник


Ответы (1)


Я бы предположил, что 96 - это довольно небольшое число, и вам не стоит слишком о нем беспокоиться. Если вы используете CGPoints, вы можете использовать NSValue для обертывания точек (а не NSStrings), используя его метод [NSValue valueWithCGPoint:] на iPhone или [NSValue valueWithPoint:] в Mac OS X 10.5.

При этом довольно легко создать массив CGPoints, если вы заранее знаете их количество. Я говорил об этих вариантах (для строк, а не точек) здесь. В этом случае вы можете просто создать 2D-массив на C следующим образом:

CGPoint myArray[32][3];

А затем используйте это как CGPoint onePoint = myArray[2][1];

person Jesse Rusak    schedule 16.04.2009