Lo primero que hice fue poner el registro en los métodos dealloc de todos los archivos AVCam. Descubrí rápidamente que AVCamCaptureManager y AVCamRecorder no estaban siendo desasignados cuando estaba el AVCamViewController. Revisé las llamadas de retención y liberación y parecían equilibrarse, así que puse un punto de interrupción en la versión de [captureManager] y descubrí que tenía una retención de 2 DESPUÉS del lanzamiento (y por lo tanto, no se llamaba al dealloc de AVCamCaptureManager).
Siguiente Pasé por el proceso de creación para el administrador de captura y descubrí que tenía un conteo de retención de 3 inmediatamente después de que se llamara el método init.
Entrar por el método init y el control de la cuenta de retención en cada línea descubrí las dos líneas siguientes fueron tanto incrementando la cuenta de retención:
[self setDeviceConnectedObserver=[notificationCenter addObserverForName:AVCaptureDeviceWasConnectedNotification object:nil queue:nil usingBlock:deviceConnectedBlock]];
[self setDeviceDisconnectedObserver=[notificationCenter addObserverForName:AVCaptureDeviceWasDisconnectedNotification object:nil queue:nil usingBlock:deviceDisconnectedBlock]];
Mirando a través encontré que las contrapartes removeObserver estaban dentro del método dealloc del AVCamCaptureManager (que no estaba siendo llamado) y por lo que la cuenta de retención nunca se redujo a 0.
para solucionarlo he creado un nuevo método removeObservers públicos:
-(void)removeObservers {
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter removeObserver:[self deviceConnectedObserver]];
[notificationCenter removeObserver:[self deviceConnectedObserver]];
}
y tomando las mismas líneas OUT del método dealloc AVCamCaptureManager.
Llamando [captureManager removeObservers]; y ENTONCES llamando a [release de captureManager]; en el método AVCamViewController dealloc se elimina con éxito el recuento de retención a 0.
Las pruebas con el Monitor de actividad ahora tienen el proceso de mediaserverd zumbando a solo 5-17Mb ¡y el bloqueo se detiene!
Espero que esto ayude a cualquier otra persona que tenga este problema!
¡Gracias! Por favor divida la respuesta en una respuesta, que luego puede aceptar: [Etiqueta para responder su propia pregunta] (http://meta.stackexchange.com/questions/17845/etiquette-for-answering-your-own-question) y [Publicando y respondiendo preguntas a las que ya has encontrado la respuesta] (http://meta.stackexchange.com/questions/2706/posting-and-answering-questions-you-have-already-found-the-answer-to) – sehe
Intenté eso, pero como no soy un usuario premium, no me dejaba responder mi propia pregunta en 24 horas ... no tenía tiempo para meterme con ella (u olvidar lo que quería grabar) ... Veré si puedo hacerlo ahora. –