Warum nicht so:
- (void)dealloc
{
if(self.bar)
self.bar = nil;
[super dealloc];
}
Und der Konstruktor geht natürlich auch hübscher, denn man weiß ja, dass dort die Instanzvariablen noch nicht belegt sind, also kann man auch das hier schreiben:
- (id)init
{
if(self = [super init])
bar = [[Bar alloc] init];
return self;
}
Ich persönlich finde es sogar besser, im Konstruktor noch keine Eigenschaftssetzer aufzurufen. Mir ist nämlich nicht wohl dabei, mich darauf zu verlassen, dass die Eigenschaften vom Allokator auf
nil initialisiert wurden, und wären sie das nicht, würde der Aufruf der Setzmethoden versuchen die zufälligen Pointer in den Instanzvariablen als Objekte zu behandeln, denen man
- release Nachrichten schicken muss, nachdem man die neuen Werte eingetragen hat...
When C++ is your hammer, every problem looks like your thumb.