Если массив имеет определенный размер и все обычные целые числа (NSInteger в вашем примере), почему бы просто не использовать простой целочисленный указатель? Например:
- (id)init {
if( (self = [super init]) ) {
// assume this is an instance variable of type NSInteger *myArray;
myArray = (NSInteger*)calloc(arraySize, sizeof(NSInteger));
// Do any other initialization that you need
}
return self;
}
- (void)myMethod {
// Do whatever you need
while( objects ) { myArray[whatever]++; }
}
- (void)dealloc {
free(myArray);
[super dealloc];
}
Если ваши требования требуют простой массив фиксированной емкости, состоящий из одного и того же примитивного типа, я думаю, что простые решения являются лучшими. Если длина массива никогда не изменится (т. Е. Вы знаете длину во время компиляции), вы можете использовать массив NSInteger в качестве переменной экземпляра вместо указателя, так что вам не придется иметь дело с выделением памяти освобождая это. Кроме того, в этом случае вы автоматически получите обнуленный массив.