Domanda

l'analizzatore xcode mi dice che un metodo restituisce un oggetto Objective-C con un conteggio di conservazione +1: inserisci qui la descrizione dell'immagine

ma self.athletes è un oggetto di cui ho bisogno anche al di fuori della mia funzione ... come posso risolvere quest 'avviso? grazie ancora

gli atleti vengono dichiarati così:

NSMutableArray *athletes;
@property (nonatomic, retain) IBOutlet NSMutableArray *athletes;
È stato utile?

Soluzione

Sostituisci quella riga con questa:

self.athletes = [NSMutableArray array];

Ho scritto una spiegazione completa qui: Gestione della memoria per proprietà con attributo di conservazione

Altri suggerimenti

Poiché la tua proprietà è definita con "Mantieni", l'utilizzo della notazione DOT comporterà un extra conservare.Il ritorno da [[NSmutableArray ALLOC] Init] ha un conteggio dei conservi di 1, quindi quando si imposta la proprietà utilizzando la funzione Setter generata dalla Dichiarazione della proprietà avrà un conteggio manterra di 2.

per correggere, o:

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

O, potresti anche farlo:

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

C'è un bel modo per gestirlo (e hai già usato questo pattern durante la creazione dell'interfaccia utente).

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

self.athletes= athletesTemp;

[athletesTemp release];

Qui non è necessario trasportare il carico di un oggetto di rilascio automatico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top