Это зависит. Вы всегда должны использовать аксессор при обычном использовании.
Однако для методов init и dealloc вы должны вместо этого использовать прямые ivars для освобождения и установки переменных. Это связано с тем, что сеттеры могут иметь побочные эффекты, которые не следует запускать во время инициализации или освобождения класса.
На практике использование средства доступа как части init, вероятно, не вызовет проблемы. Но я видел ряд реальных сбоев, когда пользовательский установщик не ожидал нулевого значения, и поэтому использование метода доступа в dealloc приводило к сбою приложения. Даже если он не потерпит крах, он может сделать много бессмысленной работы, так как класс должен был умереть.