Frage

Ich denke, dieser Code sollte in Ordnung sein, aber Static Analyzer nicht gefällt. Ich kann nicht herausfinden, warum und hatte gehofft, dass jemand könnte mir helfen, zu verstehen. Der Code funktioniert gut, das Analyseergebnis mir nur Fehler.

Coin *tempCoin = [[Coin alloc] initalize];
self.myCoin = tempCoin;
[tempCoin release];

Coin ist ein generisches NSObject und es hat eine Methode initialisieren. myCoin ist eine Eigenschaft der aktuellen Ansicht und ist vom Typ Coin. Ich nehme an, es sagt mir, ich bin undichte tempCoin.

Aus meiner Sicht ist .h I Satz myCoin als Eigenschaft mit nonatomic haben, behalten.

Ich habe versucht, den Code als auch diese normale Freisetzung zu Autorelease aber Static Analyzer weiter zu sagen:
1. Methode gibt ein Objective-C Objekt mit einer +1 count (besitzenden Referenz)
behalten 2. Gegenstand der Linie zugewiesen 97 ist nicht mehr referenziert werden nach diesem Punkt und hat eine Zählung behalten von +1 (Objekt durchgesickert)

Linie 97 ist die erste Zeile, dass ich zeigen.

War es hilfreich?

Lösung

Da der statische Analysator sucht init, nicht initialize. Es sieht dieser und nimmt an, dass die Aufgabe durch [Coin alloc] zurück ein anderes Objekt aus initialize zurückgibt, damit das erste Objekt austritt.

Ändern Sie den Namen der Methode init und dem statischen Analysator wird nicht mehr ein Leck melden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top