Tengo un código muy simple para mostrar un controlador modal (nextController es un miembro de la clase):dismissModalViewControllerAnimated no va a liberar cualquier memoria
nextController = [[InstructionsScreen alloc] initWithNibName:@"InstructionsScreen" bundle:nil];
[self presentModalViewController:nextController animated:YES];
[nextController release];
Y luego, cuando el controlador debe ocultar:
[self dismissModalViewControllerAnimated:YES];
nextController = nil;
Todo funciona bien como se esperaba, pero cuando ejecuto las asignaciones de objetos del instrumento, muestra que después de descartar el controlador modal, la memoria asignada no se libera. Esto se convierte en un problema porque cuando muestro varios controladores, la memoria ha terminado ...
¿Alguien puede darme algunas pistas? Clang no ve ningún problema, por lo que estoy atascado al llegar al límite de la memoria, porque la memoria de los controladores eliminados no se liberará.
EDIT: Lo que he descubierto hasta ahora es que parece haber una fuga en alguna parte de la materia de Apple. Forma de reproducir: XCode -> crear nuevo proyecto con la plantilla "Aplicación de utilidad". No escriba ningún código usted mismo. Simplemente cree una nueva aplicación de utilidad y ejecútela con "Asignaciones de objetos", elija ver "Creado & Aún vivo". Ahora voltee el controlador modal varias veces: verá que la memoria asignada solo crece y crece cada vez que aparece el controlador modal y cuando también está desapareciendo ...
Como dije nextController es miembro, no una propiedad: @interface MainScreenViewController: UIViewController { Identificación nextController; } usando "release" en lugar de asignar nextController a "nil" lleva a una excepción: mensaje viewDidDisappear: enviado al objeto liberado. El objeto parece estar liberado; sin embargo, el instrumento de asignación de objetos "creado y aún activo" muestra solo el uso creciente y creciente de la memoria. –