Frage

Ich mache die endgültigen Touch -Ups in einer App und werde jede Compiler/Analysator -Warnung los.

Ich habe eine Reihe von Klassenmethoden, die meine Apps auf Kerndatenentitäten aufnehmen. Dies "provoziert" den Analysator.

+ (CDProductEntity*) newProductEntity {

    return (CDProductEntity*)[NSEntityDescription insertNewObjectForEntityForName:@"CDProductEntity" inManagedObjectContext:[self context]];
}

Dies führt zu einer Analysatorwarnung:

Objekt mit +0 Rückhalt der Zählungen, die an den Anrufer zurückgegeben wurden, wo eine Anzahl von +1 (Besitz) der Anzahl erwartet wird

In der Methode, die die oben genannte Klassenmethode aufruft, habe ich Folgendes:

CDProductEntity *newEntity = [self newProductEntity];

Dies führt zu einer Analysatorwarnung:

Die Methode gibt ein Objektiv-C-Objekt mit einer Anzahl von +1 zurück (Besitz von Referenz)

Eine ausdrückliche Veröffentlichung oder Autorelease eines Kerndatenunternehmens ist normalerweise sehr sehr schlecht, aber ist es das, was ich hier auffordert? Zuerst sagt es mir, dass es eine Anzahl von +0 Halten hat und das ist schlecht, dann sagt es mir, dass es eine +1 hat, was ebenfalls schlecht ist.

Was kann ich tun, um sicherzustellen, dass ich entweder mit einem Analysator -Hiccup zu tun habe oder dass ich richtig loslasse?

Danke im Voraus

War es hilfreich?

Lösung

Das Problem statischer Analysator beschwert sich möglicherweise in Ihrem Methodennamen - gemäß den Namen von OBJ -C -Namenskonventionen mit Alloc, neuer oder Kopie in ihren Namen wird erwartet, dass sie Objekte zurückgeben, die Caller "besitzt" und veröffentlicht müssen - und Ihre Methode gibt ein autoreleaes Objekt zurück.

Zitat aus Dokumente:

Sie besitzen jedes Objekt, das Sie erstellen.
Sie "erstellen" ein Objekt mit einer Methode, deren Name mit "Alloc" oder "neu" beginnt oder "Kopie" enthält (z. B. Alloc, NewObject oder MutableCopy).

Für einen Start würde ich vorschlagen, einfach "neu" aus Ihrem Methodennamen zu entfernen

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