Si j'ai une classe de contrôleur de vue personnalisée que je souhaite réutiliser, mais lorsqu'elle est utilisée dans une instance possède une propriété non utilisée pendant le cycle de vie de la vue, dois-je la libérer dans dealloc?Objective-C - Dois-je désallouer une propriété retenue qui n'est pas utilisée?
Répondre
Il est OK pour envoyer des messages à zéro, vous devez simplement libérer vos conserver les propriétés en dealloc peu importe quoi. Si la propriété n'a pas été utilisée, elle sera nulle et l'envoi de la propriété est effectivement un non-op.
Vous devez libérer tous les objets que vous allouez ou retenez dans dealloc. S'il est référencé dans le constructeur de l'interface, vous devrez également le libérer et le mettre à zéro dans viewDidUnload() de votre contrôleur de vue, ainsi que libérer dans votre dealloc.
Ce n'est pas seulement une bonne pratique, c'est ce que vous êtes censé faire. –
Vous n'avez pas besoin d'appeler la validation sur une propriété conservée. La méthode setter est implémentée de sorte que lui donner une valeur nulle la libère pour vous. Dans la méthode dealloc vient de mettre à zéro:
self.someProperty = nil;
J'ai vu dans quelques exemples en ligne le code suivant - if (iVar! = Nil) [iVar release]; où iVar est également une propriété conservée. Y a-t-il une raison pour la déclaration if? – Glynton
@Glynton: Non. C'est juste une perte de temps. 'nil' est documenté pour pouvoir recevoir des messages. Il ne fait rien sauf retourner 0/nul. – JeremyP