È necessario impostare i puntatori su zero in Objective-C dopo il rilascio?
-
03-07-2019 - |
Domanda
C'è qualcosa di sbagliato nel fare qualcosa come
NSString * string = [[NSString alloc] init];
...
[rilascio stringa];
o c'è qualche valore (oltre alle best practice) anche nell'aggiunta
string = nil;
Soluzione
Non necessario, ma buona pratica. Se dovessi fare riferimento inavvertitamente dopo il rilascio, potrebbero accadere cose brutte, ma nell'Obiettivo C non vi è alcun danno nel fare riferimento a zero.
Altri suggerimenti
L'impostazione di una variabile di istanza su zero è più utile in un'applicazione multi-thread rispetto a un'applicazione a thread singolo, poiché con più thread non è sempre possibile garantire che una variabile di istanza venga letta solo prima di è stato rilasciato.
In genere non mi preoccupo delle applicazioni a thread singolo, a meno che non ci siano altri motivi validi.
Objective-C è davvero lo stesso di C con un preprocessore di fantasia.
L'impostazione di un puntatore su zero in Objective-C non ha alcun effetto su ciò che una volta era indicato da quel puntatore.