It's best practice not to manipulate ivars directly, with two main exceptions:

- Within `init` methods
- Within overridden property setters/getters