2011-01-04 8 views
3

ich auf einer App die letzten Ausbesserungen tue, und ich bin immer von jedem Compiler/Analysator Warnung loszuwerden.Core Data erzeugt Warnungen Analyzer

Ich habe eine Reihe von Klassenmethoden, die meinen apps Zugang zu Core Data Einheiten wickeln. Dies "provoziert" den Analysator.

+ (CDProductEntity*) newProductEntity { 

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

, die in einem Analyzer Warnung ergibt:

Objekt mit 0 behalten zählt an Anrufer zurückgeführt, wo eine +1 (Besitz) behalten Zählung

In der erwartet wird, Verfahren, das die oben Klasse Methode ruft ich habe dies:

CDProductEntity *newEntity = [self newProductEntity]; 

, die in einer Analyzer Warnung ergibt:

Methode gibt ein Objective-C Objekt mit einem +1 behalten count (Besitz Referenz)

Explizit Freigabe oder eine Core Data Einheit autoreleasing ist in der Regel sehr sehr schlecht, aber ist es das, was ich hier tun soll? Zuerst es sagt mir, es hat eine +0 behalten Zahl und das ist schlecht, dann sagt mir, es ein +1 hat, die auch schlecht ist.

Was kann ich tun, um sicherzustellen, dass ich entweder mit einem Analyzer Schluckauf oder dass ich loslassen richtig zu tun habe?

Vielen Dank im Voraus

Antwort

6

Das statische Problem Analyzer in Ihrem Methodennamen beschwert sich über sein kann - je obj-c-Namenskonventionen Methoden mit alloc, neue oder in deren Namen kopieren erwartet, dass Objekte zurückzugeben, die Anrufer ‚besitzt‘ und muss freigeben - und Ihre Methode gibt das automatisch freigegebene Objekt zurück.

Zitat von docs:

Sie besitzen ein beliebiges Objekt Sie erstellen.
Sie „create“ eine Aufgabe, ein Verfahren , dessen Name mit „alloc“ beginnt mit oder „neuem“ oder enthält „Kopie“ (zum Beispiel alloc, newObject oder mutableCopy).

Also zunächst einmal versuche ich Namen nur entfernt, neue 'aus Ihrer Methode würde vorschlagen

+0

Danke Vladimir :) Sie Platz auf sind! Ich habe einfach nicht denken, und hätte nie gedacht, dass Namenskonventionen könnte eine Analyzer Fahne heben. Nun, keine Entschuldigung, das hätte ich nicht tun sollen. Danke noch einmal. – RickiG