Вы можете выделить массив двумя способами:
Установите ивар непосредственно с сохраненным значением, например так:
_arr = [[NSArray alloc] init];
Установите свойство с автоматически освобожденным значением, как это:
self.arr = [NSArray array];
Вы можете сделать это в методе init вашего класса, хотя вы не сказали, какой суперкласс он использует, поэтому я не уверен, как должен выглядеть метод init. Если это NSObject, он будет выглядеть так:
- (id)init
{
if ((self = [super init]))
{
self.arr = [NSArray array];
}
return self;
}
Но если это UIViewController, вам нужно использовать initWithNibName: bundle, например:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)bundleOrNil
{
if ((self = [super itWithNibName:nibNameOrNil bundle:bundleOrNil]))
{
self.arr = [NSArray array];
}
return self;
}
Затем вам нужно освободить его в вашем методе dealloc, например:
- (void)dealloc
{
[_arr release];
[super dealloc];
}
Однако вы должны иметь в виду, что NSArrays не могут быть изменены после их создания, поэтому вы, вероятно, хотите либо инициализировать его некоторыми объектами, например:
self.arr = [NSArray arrayWithObjects:object1, object2, nil];
Или, если вы хотите добавить объекты к нему позже, вы должны определить его как NSMutableArray, например:
@property (nonatomic, retain) NSMutableArray *arr;
И начать с:
self.arr = [NSMutableArray array];
Это позволит вам добавить объекты к нему позже.
Кстати, если вы получаете ошибки в своем методе dealloc, это, вероятно, означает, что ваш проект использует ARC, новую технологию в iOS 5, которая означает, что вам больше не нужно писать релизы и сохранять операторы.
Если вы не используете ARC, я предлагаю вам сделать это, потому что это избавит вас от необходимости беспокоиться об этом материале сохранения / выпуска - любой разработчик iOS, который только начинает работать, должен действительно использовать ARC для каждого проекта, но потому что был представлен только в iOS 5, многие книги по Objective-C не охватывают его.