Ваша точка 1 не совсем верна: self.soundEffects
является , а не иваром, хотя может случиться так, что вы получите нечто, что равно - как это происходит в случае ваш синтезированный NSArray
, на данный момент .
Это, в свою очередь, означает, что ваша точка 2 - суть вопроса - если вы перенаправите весь доступ через аксессор, то все будет хорошо инкапсулировано, и вы сможете позже изменить реализацию, не беспокоясь о побочных эффектах. .
Это также хорошая практика, когда вы используете мутатор, поэтому вы поддерживаете согласованное управление памятью.
По большей части я бы сказал, что желательно проложить маршрут через self.property
для всего, что является свойством, и ограничить прямой доступ ivar к вещам, которые являются строго внутренними. Однако я признаю, что в некоторых случаях - особенно для вещей, которые не используют семантику retain
/ copy
- это может быть больше предпочтением стиля.