If you provide a full implementation (getter and setter) the compiler assumes you won't need an ivar so if you still want one, you have to create one yourself. Either make an ivar or let @synthesize do it for you. The end result is the same (an ivar is created); the only difference is in the first case you can actually call it whatever you want.
Slightly different but related I often have a
@property (nonatomic,readonly) SomeThing* something;
and provide a method
- (Something*) something { return xxxxxx; }
for cases where you have a method that returns something but having a property is a shortcut.