- Always use properties for everything to be consistent, even non-public class scoped variables should be done as properties unless there is a good reason not to (this will help us later if we run into threading issues and have to do any locking).
- Always set and get via properties calls (I.e. self.property, not bare assignment or accessing ivars).
- EXCEPT in the init and dealloc methods. Apple recommends directly accessing ivars in these two cases to avoid side-effects. That may mean manual retains in the init methods in some cases (as opposed to property based e.g. nonatomic, retain declaration).