J'ai une sous-classe de NsManèdeObject, la plupart des propriétés sont dynamiques (créées par l'objet géré), mais j'ai quelques propriétés d'assistance créées comme @synthesize.
Quelle est la bonne façon de libérer ces objets ?? p> ou p>
3 Réponses :
Supprimer du Documentation : p>
Vous êtes déconseillé de remplacer DidTurnintOfault CODE> et les libérez-les là-bas. Les objets gérés ne sont pas nécessairement traités lorsqu'ils sont défectueux. P>
dealloc code> ou
finaliser code> car
dratumintofault code> est généralement un meilleur moment pour effacer les valeurs - un objet géré peut ne pas être récupéré depuis un certain temps après avoir été transformé en faute. Les données de base ne garantissent pas que
dealloc code> ou
finaliseront code> sera appelé dans tous les scénarios (tels que lorsque l'application quitte); Il ne faut donc pas dans ces méthodes incluant les effets secondaires requis (comme économie ou modification du système de fichiers, des préférences de l'utilisateur, etc.). P>
blockQuote>
Fyi aux gens comme moi qui sont confondus par le nom de la substitution - Willurturnintofault n'indique de quelque manière que ce soit une erreur ou une "faute", c'est juste le terme Coredata pour prendre un objet hors circulation.
Vous voudrez peut-être examiner de plus près le Guide de programmation de données de base. Ces deux passages sont particulièrement pertinents p>
Si vous définissez une instance personnalisée variables, vous devriez nettoyer ces variables dans DidTurturnintofault plutôt que dealloc ou finaliser. p> blockQuote>
et p>
vous ne devriez généralement pas remplacer DealLoc ou finaliser pour effacer les transitoires propriétés et autres variables. Au lieu de cela, vous devriez remplacer Didurturnintofault. P> blockQuote>
[Cela devrait être un commentaire vraiment parce que je souligne un problème différent de la question, mais je veux la fonctionnalité de formatage du code].
Ne faites jamais cela: P>
[randomVar release]; // assumes the property is backed by an ivar of the same name. randomVar = nil; // can be omitted if you are in dealloc