代码之家  ›  专栏  ›  技术社区  ›  Shizam

核心数据并将上下文保存在subViewControllers中,确定要释放吗?

  •  1
  • Shizam  · 技术社区  · 14 年前

    更新managedObjectContext时,在可能被释放的视图控制器中执行保存设置是可行的做法,还是appDelegate应该处理managedObjectContext的保存,以便即使释放了viewController,保存也会完成?

    例如,从subViewController执行的这两个操作之间是否有任何区别:

    [appDelegate.managedObjectContext save:&error]
    

    [appDlegate saveContext]
    

    谢谢, 山姆

    2 回复  |  直到 14 年前
        1
  •  0
  •   Marcus S. Zarra    14 年前

    假设您的应用程序是单线程的,则可以保证在释放视图控制器之前完成保存,因为线程将阻止保存。

    1. 您不应该在后台线程上保存,这在核心数据中是危险的。

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

    因此,没有“正确”的情况下,你会担心一个错误 -save: 无论从哪个对象调用它都没有完成,因为它是阻塞调用。

        2
  •  0
  •   pix0r    14 年前

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

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