Чтобы ответить на ваш последний вопрос первым: если вы храните экземпляры объекта Objective-C (который, как вы говорите, наследуют от NSObject), тогда да, используйте NSMutableArray . Однако это не будет работать для примитивных типов (таких как int
, BOOL
, char
, char*
и т. Д.).
Objective-C использует способ объявления массивов с одним предупреждением: вы не можете распределять память в стеке (что и делает в C), только в куче. Это означает, что вы должны использовать malloc
(предпочтительнее NSAllocateCollectable()
на Leopard или новее) и free
для управления памятью. Кроме того, вы объявляете массив как указатель на массив или указатели. Примерно так: (Примечание: вытащено из воздуха, не проверено.)
Price **prices = malloc(numberOfEntries * sizeof(Price*));
...
free(prices);
Использование NSMutableArray, как правило, намного проще, чем управление собственными массивами. Просто помните о правилах управления памятью: коллекции вызывают -retain
для объекта, когда он вставлен, и -release
для него, когда он удаляется (или для всех объектов, если коллекция освобождена).