Static Analyzer sagt, dass ich ein Leck haben ... warum?
-
10-10-2019 - |
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.
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.