É necessário definir ponteiros para nulo em Objective-C após a liberação?

StackOverflow https://stackoverflow.com/questions/803531

  •  03-07-2019
  •  | 
  •  

Pergunta

Há algo de errado em fazer algo como

NSString * string = [ [ NSString alloc ] init ];
...
[ string release ];

ou existe algum valor (exceto as melhores práticas) em também adicionar

string = nil;

?

Foi útil?

Solução

Não é necessário, mas boa prática. Se você inadvertidamente a referência após a liberação, coisas ruins poderiam acontecer, mas no objetivo C não há nenhum mal em referenciar um nulo.

Outras dicas

Definir uma variável de instância para NIL é mais útil em um aplicativo multithread do que um único thread, pois com vários threads, você nem sempre é garantido que uma variável de instância será lida apenas antes da é lançado.

Geralmente, não me preocupo em aplicativos de thread único, a menos que haja outra razão atraente.

O Objective-C é realmente o mesmo que C com um pré-processador sofisticado.

Definir um ponteiro para NIL em Objective-C não tem efeito sobre o que antes foi apontado por esse ponteiro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top