核心数据并在subViewControllers中保存上下文,可以发布吗?

时间:2010-03-15 17:59:28

标签: iphone objective-c xcode core-data

更新managedObjectContext时,是否可以在可能发布的视图控制器中进行保存设置,或者appDelegate是否应该保存managedObjectContext,以便即使释放了viewController,保存也会完成?

我倾向于将保存步骤移动到我的appDelegate并让viewControllers调用[appDelegate saveContext];在进行更新的时候,虽然也许这样做没有实际意义,因为viewController在完成保存到CD之前都不会完成发布......?

例如,这两个动作之间是否有任何区别,从subViewController完成:

[appDelegate.managedObjectContext save:&error]

[appDlegate saveContext]

appDelegate中有一个运行[managedObjectContext save:& error]的方法

谢谢, 萨姆

2 个答案:

答案 0 :(得分:0)

如果您只是通过应用程序使用一个managedObjectContext,那么将保存功能保留在应用程序委托中并不是一个坏主意,这样无论视图控制器的状态如何,通过应用程序的生命周期,任何更新都将被保存当应用程序终止时。

话虽这么说,我发现添加额外的保存点很有用,有时在视图控制器中,这将在执行一些重要更新后保存数据库。这样,即使应用程序崩溃或者最终的保存操作无法完成,我也会保存我的数据。

我是核心数据的相对新手,所以如果这是不好的做法,请通知我。

答案 1 :(得分:0)

猜测您的应用程序是单线程的,保证在视图控制器发布之前保存将完成,因为线程将阻止保存。

如果您正在运行多线程应用程序;然后

  1. 您不应该在后台线程上保存,这在Core Data中是危险的。

  2. 您不应该访问后台线程上的视图控制器,因为所有与视图相关的活动都应该在主线程上执行。

  3. 因此,没有“正确”的情况,您无需担心-save:无法完成,无论您将其称为什么对象,因为它是阻止呼叫。