I've seeen the following snippet quite a bit:
In the header:
SomeClass *bla;
@property(nonatomic,retain) SomeClass *bla;
In the implementation file:
@synthesize bla;
and then
self.bla = [[SomeClass alloc] init];
I think that this assignment puts the retain count for 'bla' up by two; once through the alloc/init call, then through the retain that we asked to happen through the synthesized property setter.
As a result, I normally declare my properties like this:
In the header:
SomeClass *_bla; // note the underscore
@property(nonatomic,retain) SomeClass *bla;
In the implementation file:
@synthesize bla = _bla;
and then
_bla = [[SomeClass alloc] init];
Provided my initial assumption is correct - I'd be interested to hear whether there is 'right' way to do this, i.e. the declaration, initialisation and memory management of properties?