É necessário definir ponteiros para nulo em Objective-C após a liberação?
-
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;
?
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.