gpt4 book ai didi

ios - 我的应用程序应该只使用一个托管对象上下文吗?

转载 作者:行者123 更新时间:2023-11-28 19:23:35 25 4
gpt4 key购买 nike

我的应用程序拥有多个托管对象上下文是否合适?我正在走这条路,(将我的 MOC 从 UIViewController 子类的一个实例传递到下一个实例,)但我开始遇到 EXC_BAD_ACCESS 错误,我想知道它是否相关。

那么,我什么时候想使用多个 ManagedObjectContext,以及(什么时候)我应该只使用一个?

编辑:

在我的基于 UISplitViewController 的应用程序中,当在我的主视图中删除一行时,在主详细 View 中呈现第二个 View 后,我的详细 View Controller 崩溃respondsToSelector,我从来不调用它。

编辑 2:

基本上,我有一个主视图和一个详细 View 。在详细 View 中,用户按下按钮。该按钮会弹出一个“新交易” View 。我没有以模态方式呈现 View ,而是手动将其添加到详细 View 。如果用户在此新 View 中更改托管对象上下文,然后尝试删除主视图中的行,则会导致崩溃。如果我以模态方式呈现相同的 View ,则一切正常。

此外,NSZombieEnabled 表示正在(父)详细 View 上调用 respondsToSelector 方法。我不会在我的应用程序中的任何地方调用它。这可能是内存问题吗?线程问题?我没有明确地创建任何新线程,但我不知道是否有任何线程正在幕后创建。

可能是什么问题?

编辑3:

这个问题似乎好转了。在我的详细 View 中,我还有一个表,它与主视图一样使用 NSFetchedResults Controller 。当我删除单元格时,我还隐藏了详细 View ,这导致它被释放。释放详细 View 会导致应用程序崩溃。如果我不删除详细 View ,详细 View 表中的事务将被删除。 (这是因为我将核心数据设置为在删除帐户时级联。)

所以,也许我有太多的 NSFetchResultsController 对象?我相信正在发生的事情如下:

当我删除一行时,NSFetchResultsController 值发生变化,因此它会尝试触发委托(delegate)方法。但是,详细 View 已被删除,并且它的 View Controller 已被释放。因此,委托(delegate)系统会触发 controllerDidChange 方法,并在尝试将通知传递到详细信息 View 时崩溃。

我该如何解决这个问题?

最佳答案

一般来说,您应该只使用一个,除非您需要从多个线程访问数据,在这种情况下,每个线程都需要一个。

您当然不需要为每个 UIViewController 创建一个。

您可能还想重新考虑是否应该将整个托管对象上下文传递给 UIViewController - 只传递它完成工作所需的模型对象怎么样?

关于ios - 我的应用程序应该只使用一个托管对象上下文吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com