2016-12-02 2 views
0

Hallo, schätze die Hilfe.Legacy-Ziel C: Potenzielle Leckage des Objekts?

Wenn ich den Code über Xcode analysiere, bekomme ich ein potenzielles Leck des Objekts obj. Ich verwende älteren Code mit 32-Bit-Umgebung. ARC wird nicht unterstützt. Wie kann ich das Speicherleck verwalten, wenn es von einer anderen Klasse aufgerufen wird?

@implementation CfgCard 

+  create 
{ 
CfgCard *obj  = [ self new ]; 
obj->cardtype = HDW_CARD_NONE; 

return(obj); 
} 

Antwort

1

Nur Methoden, die mit new oder init starten wird erwartet, dass Objekte zurück mit +1 Zahl beibehalten. Der einfachste Weg, um Ihren Code zu reparieren, ist die Rückgabe [obj autorelease]. Beachten Sie, dass Sie Code, der diese Methode aufruft, wahrscheinlich ändern müssen, um sicherzustellen, dass Sie das zurückgegebene Objekt nicht übermäßig freigeben.

Alternativ können Sie Ihre create Methode als NS_RETURNS_RETAINED markieren.