7
votes

iPhone NsmanagedObject - La manière appropriée de translocing?

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 ?? xxx

ou xxx


0 commentaires

3 Réponses :


11
votes

Supprimer DidTurnintOfault et les libérez-les là-bas. Les objets gérés ne sont pas nécessairement traités lorsqu'ils sont défectueux.

du Documentation :

Vous êtes déconseillé de remplacer dealloc ou finaliser car dratumintofault 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 ou finaliseront 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.).


1 commentaires

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.



6
votes

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

Si vous définissez une instance personnalisée variables, vous devriez nettoyer ces variables dans DidTurturnintofault plutôt que dealloc ou finaliser.

et

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.


0 commentaires

4
votes

[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


0 commentaires