self.array = foo
является сокращением для [self setArray:foo]
(т. Е. Вы получаете доступ к методам синтезированных свойств), в то время как просто array = foo
непосредственно обращается к переменной экземпляра.
В этом случае вы могли бы создать утечку памятис self.array = [[NSArray alloc] init];
, так как свойство сохранит его, и поэтому счетчик ссылок будет 2 вместо 1. Поэтому лучше было бы: self.array = [NSArray array];
.
Какой из них выбрать - почти дело вкуса, но использованиесвойства дают вам несколько преимуществ, таких как автоматическая поддержка кодирования ключ-значение.Это также является преимуществом, если вы когда-нибудь захотите реализовать setArray:
самостоятельно, чтобы он мог выполнять дополнительные действия при назначении массива (например, перезагрузить UITableView).С другой стороны, это немного медленнее, поскольку это дополнительный вызов метода (имеет значение, только если он вызывается в цикле много ).Но почти для всех приложений лучше быть правильным, чем как можно быстрее.Использование свойств может упростить вам управление памятью.