Without reference cycles NSFetchedResultsController
can turn its managed objects into fault properly when they are not needed. But with reference cycles, it not, so
As I mentioned in my comments HERE, the FRC is responsible to fault-in or fault-out the objects it fetched.
Which in turn break any strong reference cycles between your managed objects.
You can test this by setting a breakpoint in your objects willTurnIntoFault
method when scrolling a large enough table.
This is done with no regards as to what other objects reference these fetched objects (as far as I can tell).