Ich weiß, dass, wenn Sie Folgendes tun Sie ganz sicher ein Speicherleck haben:Ist dies ein Ziel-C-Speicherleck?
id foo = [[NSObject alloc] init];
foo = nil;
Aber was, wenn Sie self.foo verwenden, eine Eigenschaft mit behalten? Und Ihr Code sieht stattdessen wie folgt aus:
foo = [[NSObject alloc] init];
self.foo = nil;
Ist das noch ein Speicherverlust, da die Zugriffs den Speicher freigibt, bevor es auf Null einstellen?
Beachten Sie, dass die Verwendung von Eigenschaften in dealloc normalerweise nicht empfohlen wird, wenn die Zugriffsmethode geändert wird, um einen anderen ivar (der bereits freigegeben wurde) zu ändern. Ich benutze stattdessen nur Release. –
@Alex: +1 für eine ausgezeichnete Warnung, aber -1 für den Vorschlag, self.foo = nil in einer Dealloc-Methode zu verwenden! –
@eJames self.foo = nil ist die Art, wie Apple es ursprünglich in der dealloc-Methode empfohlen hat und überall im Beispielcode ist. –