The bad things that happened, especially in the days before ARC, when people assigned objects to the iVar store instead of a property. If this was done by accident, then the memory management implied by the synthesized installer will not be applied, which will lead to leaks or premature releases.
I use this in a simple way, but now I use prefixes. I no longer declare my iVar, I let the modern runtime take care of this for me. I use prefixes so that I do not accidentally use iVar as a local variable.
Also, I usually treat my properties as self.iVar
almost everywhere in my classes. This is so that I can use lazy loaded properties whenever I want, without worrying about which ones are not lazily loaded.
source share