Pregunta

el analizador de xcode me dice que un método devuelve un objeto Objective-C con un conteo de retención de +1: ingrese la descripción de la imagen aquí

pero el self.athletes es un objeto que necesito también fuera de mi función ... ¿cómo puedo solucionar esta 'advertencia? gracias de nuevo

los atletas se declaran así:

NSMutableArray *athletes;
@property (nonatomic, retain) IBOutlet NSMutableArray *athletes;
¿Fue útil?

Solución

Reemplace esa línea con esta:

self.athletes = [NSMutableArray array];

Escribí una explicación completa aquí: Gestión de memoria para propiedades con atributo de retención

Otros consejos

Dado que su propiedad se define con "retener", el uso de la notación de puntos dará como resultado una retención adicional.El retorno de [[NSMutableArray alloc] init] tiene un recuento de retención de 1, y luego, cuando establezca la propiedad utilizando la función de establecimiento generada por la declaración de propiedad, tendrá un recuento de retención de 2.

Para solucionarlo:

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

O también puede hacer esto:

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

Hay una buena manera de manejar esto (y ya usó este patrón al crear la interfaz de usuario).

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

self.athletes= atletasTemp;

[lanzamiento de la temperatura de los atletas];

Aquí no necesita llevar la carga de un objeto de liberación automática.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top