mergeChangesFromContextDidSaveNotification consume memory

Tengo dos NSManagedObjectContext, uno para ui y otro para tareas en segundo plano. Estoy tratando de combinar cambios en UIcontext siempre que cambie el background. Pero siempre que llamo

mergeChangesFromContextDidSaveNotification:notification 

Simplemente comienza a comer memory (se incrementa hasta 1GB en el simulador) y causa un locking.

por supuesto, configuré una notificación:

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

y también intenté hacer la combinación en hilo principal, etc. ¡Sin suerte!

Descubrí que la representación de URIR está causando el problema. Por alguna razón se sigue llamando. (por el código de Apple no es mío)

Tenga en count que lo dejé ejecutar por debajo de un segundo y usa 64.95 MB, crecerá bastante rápido con el mismo tree de llamadas. ¡Si lo mantengo funcionando, también bloquearía el osx!

Resultado del analizador

El problema es el object:nil . Estás escuchando un eco infinito de notifications.

Debe especificar un object de context específico para escuchar las notifications.

El problema aquí es que, dado que Google Analytics también usa datos centrales, estamos interceptando las interminables notifications que Google Analytics lanzó también.

Establecer un object a un valor no nulo no funcionó para mí. Encontré otra manera y me funcionó como algo mágico.

Dentro de su observador tengo el método selector como se indica a continuación.

 NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(managedObjectContextDidSave(_:)), name: NSManagedObjectContextDidSaveNotification, object: nil) 

y,

 func managedObjectContextDidSave(notification: NSNotification) { if notification.object?.persistentStoreCoordinator != self.persistentStoreCoordinator { return } //do remaining task here. }