No se pueden agregar elementos a un ivar NSMutableArray
Mi objetivo es agregar una cadena a una matriz y lo hago en un método al que llamo.
En este método, obtengo un valor nulo en la matriz y no sé por qué. Tengo esto al comienzo de mi clase:
NSMutableArray *listOfEvents;
y un método que invoco en cada evento:
-(void)EventList
{
[listOfEvents addObject:@"ran"];
NSLog(@"%@", listOfEvents);
}
Me meto (null)
en el registro.
Si pongo la definición de la matriz NSMutableArray *listOfEvents;
en el cuerpo de la función, obtengo el valor de la cadena @"ran"
cada vez, por lo que la matriz siempre tiene un solo valor, en lugar de tener muchas cadenas nombradas @"ran"
.
¿Qué hay de malo en esto? Parece que no puedo entender algo sobre las matrices, aunque he leído los documentos varias veces.
Supongo que no lo has inicializado listOfEvents
.
Asegúrate de hacerlo listOfEvents = [[NSMutableArray alloc] init];
en el método de tu clase init
. También asegúrese de publicarlo en el dealloc
método de su clase.
Si recibe nil
su mensaje de registro, debe asegurarse de que listOfEvents no sea nulo antes de agregar su objeto. ES DECIR:
-(void)EventList
{
if (listOfEvents == nil) {
listOfEvents = [[NSMutableArray alloc] init];
}
[listOfEvents addObject:@"ran"];
NSLog(@"%@",listOfEvents);
}
En Objective-C, los mensajes con void
tipos de retorno se envían nil
a una tierra de ninguna parte absolutamente silenciosa.
Además, por razones de equilibrio, asegúrese de tener una [listOfEvents release]
llamada en su dealloc
implementación.