Sans cycles de reference, NSFetchedResultsController
peut NSFetchedResultsController
transformer ses objects gérés en erreur lorsqu'ils ne sont pas nécessaires. Mais avec des cycles de reference, ce n'est pas le cas, donc je dois redéfinir ces objects moi-même. Toutefois, la re-gestion manuelle des objects gérés par NSFetchedResultsController
est dangereuse . Donc, je veux savoir ce que Core Data
experts de Core Data
pensent est la meilleure façon de couper le graphe d'objects introduit par NSFetchedResultsController
. Merci.
Mettre à jour:
Je crois que normalement FRC devrait être en mesure de re-fault des objects, même avec des cycles de reference. J'ai l'printing que ce n'est pas à cause d'un vieux bug que j'ai rapporté à Apple en 2012 dont l'état est toujours ouvert: FRC ne re-fausse jamais les objects nouvellement insérés (après sauvegarde), donc je dois les rerequestr manuellement. Voici mon projet de test: http://d.pr/f/Ohe3 .
Comme je l'ai mentionné dans mes commentaires ICI , la FRC est responsable de la faute ou de la faute sur les objects qu'elle a récupérés.
Qui à son tour briser les cycles de reference forts entre vos objects gérés.
Vous pouvez tester cela en définissant un point d'arrêt dans la méthode willTurnIntoFault
vos objects lorsque vous willTurnIntoFault
défiler une table suffisamment grande.
Ceci est fait sans égard à ce que d'autres objects referencent ces objects récupérés (pour autant que je sache).
Je pense que vous devriez simplement éviter les cycles de reference forts. Habituellement, il n'y a aucune raison impérieuse d'avoir à traiter le problème que vous décrivez.
Pour une discussion détaillée, voir le chapitre sur les données encapsulantes d'Apple du guide Programmation avec Objective-C où vous findez une section intitulée Éviter les cycles de reference forts .