Question: In objective c, if the using the getter and directly accessing the ivar do exactly the same thing, no lazy loading code in the getter, all it does is returns the ivar, would you still use the accessor or access the ivar directly since there is no difference? Why?

EDIT: I'm talking about inside the class.

Answer: 
There is a small performance advantage to be enjoyed by using the ivar directly. However, to avoid confusion, I typically prefix my ivars with \_ on the front, and then synthesize a property using @synthesize foo = \_foo; which means I can either do [self foo] or \_foo. It then becomes clearer in the code which I'm referring to.

However, the advantage isn't much, and some might argue that this is premature optimisation. What using the property (or method) will give you is the ability to evolve your class later and change the ivar but whilst keeping the property the same (e.g. making it a calculated property). It will also allow subclasses to override your property and still work.

(By the way, there are still some cases where referring to property syntax can be helpful, such as when writing to the ivar. In this case, the property support for copy|retain can be helpful in freeing up the previous object and getting the right sequence of retain/release calls)
I decided to always use the [self ivar], not directly ivar, even though I use standard ObjC bracket notation , not dot notation. Only exception is if [self ivar] is a lazy-loading accessor and I already used it in the method and I know it has been initialised and I don't want to check if it is nil the 10 more times I use it in the method.