#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. Я не думаю, что я ясно объяснил это в сообщении. Пожалуйста, взгляните еще раз.