A property is not automatically synthesized if you implement both setter and getter method for that property, so you have to synthesize it explicitly:
@synthesize foo = _foo;
(or add the instance variable _foo
explicitly.)
The same applies if you implement the getter method for a read-only property.
(If you implement all necessary accessor methods for a property then the compiler does not assume anymore that this property is necessarily backed up by an instance variable.)