【问题标题】:Threaded Core Data线程核心数据
【发布时间】:2013-09-24 13:16:53
【问题描述】:

我在这里问你我应该如何使用线程核心数据。我会这样做

为每个调用数据库方法的控制器类制作ManageObjectContext。我将通过在方法中将控制器名称作为参数传递来获得。在我的数据库类中。我有一个共享的ManageObjectContext 和一个字典,我将在其中设置ManageObjectContext 以供控制器检索或设置。你们能告诉我它是否有任何缺点。我注意到的一个是所有ManageObjectContexts 将永远在内存中。如果有人可以提供任何其他方法,请提出。谢谢。

【问题讨论】:

    标签: iphone ios objective-c multithreading core-data


    【解决方案1】:

    Core Data 线程很难。幸运的是,有一个可用的 entire guide 记录了如何在 Core Data 中管理并发。

    内存使用是否存在问题只能通过测量内存使用来回答,通常使用分配工具。托管对象上下文本身相当便宜。要回答的真正问题是,有多少托管对象本身(实际上是其中包含的数据)在这些上下文之间复制。 Instruments 还具有非常有用的 Core Data 特定工具。

    【讨论】:

    • 注意:该指南有些过时,并未涵盖 iOS 5 中引入的队列限制模型——这正是您此时真正应该使用的。
    • @quellish 它大量提到了队列,并暗示了 NSManagedObjectContext 特定文档,该文档具有基于队列的 API。大量使用了“线程”这个词,但是线程和队列在建模并发的上下文中很大程度上是可以互换的(队列提供了一个非常轻量级的模型来提供与线程解耦的并发,但是 实际 并发行为——以及其中的问题——在算法上基本相同)。
    • 那么如果我使用 dictioarny 并为每个控制器设置上下文不会占用太多内存?
    • @bbum 具体来说,它没有涵盖 iOS 5 中引入的 NSManagedObjectContext 并发类型的使用。最近修订的 NSManagedObjectContext 类引用和几个 WWDC 会话一样
    猜你喜欢
    • 2013-01-17
    • 2013-03-02
    • 2011-02-07
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多