Звучит так, будто дело в плохих методах выделения памяти для объектов.Пока вы не используете многопоточность своего приложения и существует только один managedObjectContext (типичный), вы можете без проблем передавать эти NSManagedObjects между VeiwControllers.
Вероятно, происходит то, что вы передаете ссылку от одного ViewController к другому, не увеличивая его счет с сообщением сохранения.Это может привести к риску.
Я бы порекомендовал иметь свойство retain для ваших ViewControllers, например
@property (nonatomic, retain) NSManagedObject *yourObject;
Затем, когда вы получите свой управляемый объект, сохраните его так:
self.yourObject = ...;
... и когда вы хотите передать его другому контроллеру представления:
otherViewController.yourObject = ...;
И он позаботится о настройке удержания / разблокирования для вас.