Não é possível adicionar itens a um NSMutableArray ivar

Meu objective é adicionar uma string ao array, e faço isso em um método que eu chamo.

Nesse método, obtenho um valor nulo na matriz e não sei por quê. Eu tenho isso no começo da minha aula:

NSMutableArray *listOfEvents; 

e um método que eu chamo em cada evento:

 -(void)EventList { [listOfEvents addObject:@"ran"]; NSLog(@"%@", listOfEvents); } 

Eu recebo (null) no log.

Se eu colocar a definição da matriz NSMutableArray *listOfEvents; no corpo da function, recebo o valor da string @"ran" , de cada vez, para que a matriz sempre tenha apenas um valor, em vez de ter muitas strings nomeadas @"ran" .

O que há de errado com isso? Parece que não consigo entender algo sobre matrizes, embora tenha lido os documentos várias vezes.

Eu estou supondo que você não tenha inicializado listOfEvents .

Certifique-se de fazer listOfEvents = [[NSMutableArray alloc] init]; no método init da sua class. Certifique-se também de liberá-lo no método dealloc da sua class.

Se você está recebendo nil em sua mensagem de log, você precisa ter certeza que listOfEvents não é nil antes de adicionar seu object. IE:

 -(void)EventList { if (listOfEvents == nil) { listOfEvents = [[NSMutableArray alloc] init]; } [listOfEvents addObject:@"ran"]; NSLog(@"%@",listOfEvents); } 

Em Objective-C, mensagens com tipos de retorno void enviados para nil vão para absolutamente silencioso lugar-terra.

Além disso, para manter o equilíbrio, verifique se você tem uma [listOfEvents release] na implementação do seu dealloc .

Aparentemente você não está inicializando sua matriz.

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

Se esse é o seu problema, sugiro ler os documentos novamente. E não os documentos NSMutableArray. Volte para a linguagem de programação Objective-C e outros.

Você precisa alloc o NSMutableArray . Tente fazer isso primeiro –

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

Depois disso, você poderia fazer o que você planejou …