Frage

Der Xcode-Analysator teilt mir mit, dass eine Methode ein Objective-C-Objekt mit einer Anzahl von +1 zurückgibt: Bildbeschreibung hier eingeben

aber die self.athletes ist ein Objekt, das ich auch außerhalb meiner Funktion brauche ... wie kann ich diese Warnung lösen? Nochmals vielen Dank

Der Athlet wird wie folgt deklariert:

NSMutableArray *athletes;
@property (nonatomic, retain) IBOutlet NSMutableArray *athletes;

War es hilfreich?

Lösung

Ersetzen Sie diese Zeile durch folgende:

self.athletes = [NSMutableArray array];

Ich habe hier eine vollständige Erklärung geschrieben: Speicherverwaltung für Eigenschaften mit Beibehaltungsattribut

Andere Tipps

Da Ihre Eigenschaft mit "Beibehalten" definiert ist, führt die Verwendung der Punktnotation zu einer zusätzlichen Beibehaltung.Die Rückgabe von [[NSMutableArray alloc] init] hat eine Aufbewahrungszahl von 1, und wenn Sie die Eigenschaft mit der durch die Eigenschaftsdeklaration generierten Setter-Funktion festlegen, hat sie eine Aufbewahrungszahl von 2.

So beheben Sie Folgendes:

self.athletes = [NSMutableArray array]; // Returns an autoreleased object

Oder Sie können auch Folgendes tun:

athletes = [[NSMutableArray alloc] init]; // Doesn't use the setter generated by the property declaration, so doesn't retain again.

Es gibt eine gute Möglichkeit, damit umzugehen (und Sie haben dieses Muster bereits beim Erstellen der Benutzeroberfläche verwendet).

NSMutableArray * athletsTemp= [[NSMutableArray alloc] init];

self.athletes= athletsTemp;

[athletsTemp release];

Hier müssen Sie nicht die Last eines Auto-Release-Objekts tragen.

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