2010-02-12 34 views
10

Problema: Estoy haciendo una importación realmente grande donde analizo un archivo XML. Por cada 10 objetos administrados analizados, deseo guardar el Contexto del Objeto Administrado y deshacerme de esos 10 objetos en la memoria, de modo que nunca tenga más de 10 objetos en la memoria a la vez.¿Puedo borrar el contexto del objeto administrado?

Después de guardarlo, ¿cómo podría borrar el contexto para que todos los objetos se alejen de la memoria?

Respuesta

25

En una situación como esta, hay cuatro cosas que recordar que hacer:

  1. envolver su bucle en un NSAutoreleasePool
  2. Periódicamente guardar el contexto; entonces
  3. Restablecer el contexto con -reset
  4. de lanzamiento y volver a crear la agrupación autorelease

Esto eliminará toda la memoria en uso y despejar el contexto.

+1

Hola Marcus !! ¿No eres el tipo que escribió ese gran libro de datos básicos? Gracias por la respuesta. Bastante seguro que es el mejor;) – dontWatchMyProfile

+3

Sí, escribí el libro :) –

+0

Creo que hemos encontrado algunos problemas para los que estas instrucciones no funcionan. Me encantaría saber algo diferente. El usuario de SO http://stackoverflow.com/users/1949877/scott-carter tiene una publicación de blog http://finalize.com/2013/01/04/core-data-issues-with-memory-allocation/. Nuestros problemas son idénticos a la sección 'NSTemporaryObjectID_default'. También cf. http://stackoverflow.com/questions/9575994. –

Cuestiones relacionadas