Iphone 核心数据并将上下文保存在SubViewController中,确定要发布吗?
更新managedObjectContext时,在可能被释放的视图控制器中执行保存设置是否可行,或者appDelegate是否应处理managedObjectContext的保存,以便即使释放了viewController,保存也会完成 我倾向于将保存步骤移动到我的appDelegate中,并让ViewController调用[appDelegate saveContext];当进行更新时,尽管这可能没有意义,因为viewController在完成保存到CD之前都不会完成发布 例如,从subViewController执行的这两个操作之间是否有任何区别:Iphone 核心数据并将上下文保存在SubViewController中,确定要发布吗?,iphone,objective-c,xcode,core-data,Iphone,Objective C,Xcode,Core Data,更新managedObjectContext时,在可能被释放的视图控制器中执行保存设置是否可行,或者appDelegate是否应处理managedObjectContext的保存,以便即使释放了viewController,保存也会完成 我倾向于将保存步骤移动到我的appDelegate中,并让ViewController调用[appDelegate saveContext];当进行更新时,尽管这可能没有意义,因为viewController在完成保存到CD之前都不会完成发布 例如,从subVi
[appDelegate.managedObjectContext save:&error]
及
其中,appDelegate中有一个运行[managedObjectContext保存:&错误]的方法
谢谢,
Sam如果您在应用程序中只使用一个managedObjectContext,那么在应用程序委托中保留保存功能不是一个坏主意,这样无论应用程序生命周期中视图控制器的状态如何,应用程序终止时都会保存任何更新 也就是说,我发现添加额外的保存点很有用,有时是在视图控制器中,在执行一些重要更新后,这些保存点将保存数据库。这样,即使应用程序崩溃或最终保存操作无法完成,我也可以保存数据
我是核心数据的新手,因此如果这是一种不好的做法,请通知我。猜测您的应用程序是单线程的,您可以保证在释放视图控制器之前完成保存,因为该线程将阻止保存 如果您正在运行多线程应用程序;然后
因此,没有“正确”的情况下,您必须担心
-保存:
无法完成,无论您从哪个对象调用它,因为它是一个阻塞调用。是的,这就是我的学习方式。我想知道如果VC被释放或者在[context save]完成之前它不会完全释放,那么在viewController中使用[context save]步骤是否会导致问题。啊,是的,我忘了。我正在运行一个多线程应用程序,并根据线程应用程序文档中的建议更新coreData(在线程中进行复制和更新,在主线程上进行合并)。感谢您在单线程环境中的确认。正如我提到的,即使您在多线程应用程序中,您的保存不会跨越线程边界,因此它将阻止它所在的线程,因此您仍然可以安全地从任何对象调用-save:
,只要在调用-save:
后释放该对象即可
[appDlegate saveContext]