ios - mergeChangesFromContextDidSaveNotification 消耗内存

标签 ios core-data

我有两个 NSManagedObjectContext,一个用于 ui,一个用于后台任务。每当背景更改时,我都试图将更改合并到 UIcontext。但是每当我调用

mergeChangesFromContextDidSaveNotification:notification

它只是开始消耗内存(在模拟器上会增加到 1GB)并导致崩溃。

当然我设置了一个通知:

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(coreUpdateFromApp:)
                                                 name:NSManagedObjectContextDidSaveNotification
                                               object:nil];

还尝试在主线程中进行合并等。不走运!

我发现 URIRepresentation 导致了这个问题。由于某种原因,它一直被调用。 (苹果的代码不是我的)

请注意,我让它运行了不到一秒,它使用了 64.95MB,它会随着相同的调用树增长得非常快。如果我让它继续运行,它也会使 osx 崩溃!

Profiler result

最佳答案

问题是object:nil。您正在聆听无尽的通知回声。

您需要指定一个特定的上下文对象来监听通知。

关于ios - mergeChangesFromContextDidSaveNotification 消耗内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23001255/

相关文章:

ios - 使用 NotificationCenter 和 Observer 在 UIViewControllers 之间发送 bool 值

iphone - 复制(复制)核心数据记录和相关记录

ios - CloudKit 如何与多个设备同步?

ios - 使用 CoreData 存储对象

iphone - 计算核心数据中的不同项目

ios - 预加载信息的核心数据

ios - 为网络应用程序创建 HTML 密码屏幕

ios - 如何在两个 View Controller 之间共享mapkit的变量?

ios - 如何在 coreaudio 中为 AudioStreamBasicDescription 指定比特率?

ios - 无法在 XIB 中添加子类