Question

L'analyseur Xcode me dit qu'une méthode renvoie un objet Objective-C avec un nombre de conserve +1:enter image description here

Mais le moi. Athletes est un objet dont j'ai besoin également en dehors de ma fonction ... comment puis-je résoudre cet avertissement? Merci encore

Les athlètes sont déclarés comme ceci:

NSMutableArray *athletes;
@property (nonatomic, retain) IBOutlet NSMutableArray *athletes;
Était-ce utile?

La solution

Remplacez cette ligne par celle-ci:

self.athletes = [NSMutableArray array];

J'ai écrit une explication complète ici: Gestion de la mémoire pour les propriétés avec attribut de conservation

Autres conseils

Étant donné que votre propriété est définie avec "conserver", l'utilisation de la notation DOT entraînera une conservation supplémentaire. Le rendement de la [[nsMutableArray alloc] init] a un nombre de conservation de 1, puis lorsque vous définissez la propriété en utilisant la fonction de setter générée par la déclaration de propriété, il aura un décompte de conservation de 2.

Pour réparer, soit:

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

Ou, vous pouvez également faire ceci:

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

Il existe une belle façon de gérer cela (et vous avez déjà utilisé ce modèle lors de la création de l'interface utilisateur).

NsMutableArray * athlète de l'athlète = [[nsMutableArray alloc] init];

self.athletes = athlète de l'athlète;

Libération d'athlète];

Ici, vous n'avez pas besoin de transporter la charge d'un objet de libération automatique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top