He estado utilizando instrumentos para encontrar asignaciones que no se están liberando correctamente. Tengo MKMapViewDelegate que agrega un mapa a través de un método de instancia después de que se ha instanciado. Puedo ver en el árbol de llamadas que este método conserva alrededor de 300 KB de memoria, después de que se lanza ViewDelegate. Comenté la carne del código y le sigue mantiene la memoria con sólo esta línea:MKMapView initWithFrame no libera memoria con ARC
self.map = [[MKMapView alloc] initWithFrame:CGRectMake(10, 210, 300, 125)];
miro en la lista de objetos y la misma no está viviendo MKMapView, pero a medida que sigo creando nuevas ViewDelegates, que la memoria sigue sumando Así es como el mapa se define:
@property (strong, nonatomic) MKMapView *map;
delegado de la correspondencia se fija a cero, así como la referencia en dealloc del ViewDelegate
self.map.delegate = nil;
self.map = nil;
¿Qué le parece usar el lanzamiento en lugar de cero? ¿Puedes verificar eso al final? –
@ S.P. están usando ARC, no hay lanzamiento. –
@ S.P. nadie más se refiere a esa propiedad, ¿verdad? ¿Nada más potencialmente sosteniendo una referencia? –