Правильный способ объявить NSArray (с точки зрения памяти)

#memory-management #nsarray

#управление памятью #nsarray

Вопрос:

У меня есть NSArray, который обладает свойствами nonatomic и сохраняет их. Что я хотел бы знать, так это правильно ли я инициализирую его, чтобы количество сохранений было таким, каким оно должно быть?

_lengthArr — это @synthesized ivar для lengthArr в my.h

 @synthesize lengthArr = _lengthArr;

_lengthArr = [[NSArray arrayWithObjects:@"10 Minutes", @"20 Minutes", @"30 Minutes", @"1 Hour", @"2 Hours", @"5 Hours", @"5 Hours  ", nil] retain];
  

Ответ №1:

Вы присваиваете там ivar, поэтому опубликованный вами код будет делать то, что вы хотите. Вы также могли бы использовать _lengthArr = [[NSArray alloc] initWithObjects:...] , что позволило бы избежать бесполезного автоматического выпуска.

Или вы могли бы сделать self.lengthArr = [NSArray arrayWithObjects:...] , чтобы разрешить установщику автоматически сохранять его, хотя рекомендуется избегать этого в методах инициализации.

Комментарии:

1. Он уже назначен в .h. Я не думаю, что я ясно объяснил это в сообщении. Пожалуйста, взгляните еще раз.