override getter only needs @synthesize
I want to ovveride getter for lazy instantiation and leave default setter. Do I need @synthesize ? Why ? @interface Foo() @property (strong, nonatomic) NSObject *bar; @end @implementation Foo - (NSObject *)bar { if(!_bar) _bar = [[NSObject alloc] init]; return _bar; } @end Update: I've changed variable and class name, because it was confusing. From Deck and card to Foo and bar. No, you only need to explicitly synthesize (to get the synthesized ivar) if you explicitly implement all of the accessor methods (both getter and setter for readwrite properties, just the getter for readonly properties)