It’s not really necessary to declare properties for all ivars. A few points come to mind:
- If an ivar is only going to be assigned to once during the lifetime of the object, you don’t really gain anything by declaring a property. Just retain/copy/assign during
init
and then release as necessary duringdealloc
. - If an ivar is going to be changed frequently, declaring a property and always using the accessors will make it easier to avoid memory management errors.
- You can declare properties in a class extension in the .m file rather than the .h file if the properties and ivars are meant to be private.
- When targeting iOS 4.0+, you don’t need to declare ivars at all in your header if you define a property and synthesize accessors.
So I generally use properties, but for things like a NSMutableArray
that an object allocates during init
and uses to hold a bunch of whatevers, I’ll use a plain old ivar since I’ll never be reassigning the ivar.