ver recuperar pantalla notificaciones funciona control como centro borradas bloqueada aparece iphone memory-management uiviewcontroller crash

recuperar - iPhone se bloquea al presentar el controlador de vista modal



recuperar notificaciones iphone (16)

** Como se dijo antes, el uso es IgnorarInteracciónEventos

//Check if the app is ignoring interatctions, if so, add a delay for 1 sec if([[UIApplication sharedApplication] isIgnoringInteractionEvents]==TRUE) { [currentViewController performSelector:@selector(presentModalViewController:animated:) withObject:screen afterDelay:1]; } else { [currentViewController presentModalViewController:screen animated:YES]; }

Intento mostrar una vista modal inmediatamente después de que se haya presentado otra vista de manera modal (la segunda es una vista de carga que aparece).

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // Show load LoadViewController *loader = [[LoadViewController alloc] init]; [self presentModalViewController: loader animated:NO]; [loader release]; }

Pero cuando hago esto, recibo una "Señal de programa recibida": EXC_BAD_ACCESS "." error.

El seguimiento de la pila es:

0 0x30b43234 in -[UIWindowController transitionViewDidComplete:fromView:toView:] 1 0x3095828e in -[UITransitionView notifyDidCompleteTransition:] 2 0x3091af0d in -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] 3 0x3091ad7c in -[UIViewAnimationState animationDidStop:finished:] 4 0x0051e331 in run_animation_callbacks 5 0x0051e109 in CA::timer_callback 6 0x302454a0 in CFRunLoopRunSpecific 7 0x30244628 in CFRunLoopRunInMode 8 0x32044c31 in GSEventRunModal 9 0x32044cf6 in GSEventRun 10 0x309021ee in UIApplicationMain 11 0x00002154 in main at main.m:14

¿Algunas ideas? Estoy totalmente perplejo! La vista de carga está vacía, por lo que definitivamente no está ocurriendo nada que esté causando el error. ¿Tiene algo que ver con el lanzamiento modal de 2 vistas en el mismo bucle de evento o algo así?

Gracias,

Micro

Editar: Muy extraño ... Lo he modificado ligeramente para que la vista de carga se muestre después de un pequeño retraso, ¡y esto funciona bien! ¡Así que parece ser algo dentro del mismo ciclo de eventos!

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // Show load [self performSelector:@selector(doit) withObject:nil afterDelay:0.1]; } - (void)doit { [self presentModalViewController:loader animated:YES]; }


Acabo de tener este problema y resultó que mi problema se debía a que yo era el delegado delegado de mi protocolo.


Creo que este problema tiene algo que ver con un problema que también encontré. Es muy fácil de reproducir:

Crear nuevo proyecto de XCode "Aplicación de utilidad". En FlipsideViewController.m, simplemente inserte el siguiente método:

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear: animated]; [self showInfo]; }

Si hace esto, inicie la aplicación, luego la vista de flipside se activará de inmediato. Tan pronto como presione el botón "Hecho" en la vista flipside, volverá a la Vista principal que activa de nuevo viewDidAppear y vuelve directamente a la vista flipside. Tan pronto como se muestre la vista flipside, la aplicación se detiene, no se llaman desasignadores de memoria, es como si hubiera presionado el botón de inicio.

Cuando estaba usando algunas propiedades adicionales en esas vistas, también recibí la excepción, así que quité el código a la cantidad mínima ...

Realmente no tengo idea, cuál es realmente este problema ...

Saludos, Tobias


Creo que la razón del ciclo es que el nuevo controlador de vista que está cargando tiene un método viewDidAppear de manera predeterminada y tiene

[super viewDidAppear animated];

lo que significa que volverá a llamar al viewDidAppear de su controlador de vista principal, de modo que irá en un bucle

en Viewcontroller que está presentando tiene un método como este, sin super viewdidapper:

-(void)viewDidAppear:(BOOL)animated{ //[super viewDidAppear:animated]; no super }


Creo que reproduje el mismo error en iOS 4. En mi aplicación, el bloqueo se produjo constantemente al intentar mostrar una segunda vista modal inmediatamente después de mostrar una primera vista modal. Luché por unas horas volviéndome loco.

Después de leer las publicaciones en este hilo, traté de crear un ejemplo reproducible simple utilizando la plantilla de aplicación de la barra de pestañas. Pude usar el UIImagePickerController para mostrar la primera vista modal después de responder a un botón, hacer clic en "FirstViewController.m". Cuando traté de mostrar el UIImagePickerController nuevamente (después de manejar el mensaje imagePickerControllerDidCancel), la aplicación se bloqueó con el mismo error.

En el dispositivo, simplemente no había ninguna pista de lo que estaba pasando. Sin embargo, cuando ejecuté el código en el simulador, tuve la suerte de recibir este mensaje en la consola:

*** Terminating app due to uncaught exception ''NSInternalInconsistencyException'', reason: ''Attempting to begin a modal transition from to while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed''

Así que parece que mi única opción es seguir el consejo del mensaje de error y simplemente esperar hasta que viewDidAppear (usando un indicador para indicar que estoy en este modo especial) y luego cargar la segunda vista modal.

Aquí está el rastro completo de pila para completar:

** Call stack at first throw: ( 0 CoreFoundation 0x0238c919 __exceptionPreprocess + 185 1 libobjc.A.dylib 0x024da5de objc_exception_throw + 47 2 CoreFoundation 0x02345078 +[NSException raise:format:arguments:] + 136 3 Foundation 0x000ab8cf -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116 4 UIKit 0x00544317 -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] + 212 5 UIKit 0x0035c769 -[UIViewController presentModalViewController:withTransition:] + 2937 6 TestTempDelete 0x000021cf -[FirstViewController showImagePicker] + 167 7 Foundation 0x0002fcea __NSFireDelayedPerform + 441 8 CoreFoundation 0x0236dd43 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19 9 CoreFoundation 0x0236f384 __CFRunLoopDoTimer + 1364 10 CoreFoundation 0x022cbd09 __CFRunLoopRun + 1817 11 CoreFoundation 0x022cb280 CFRunLoopRunSpecific + 208 12 CoreFoundation 0x022cb1a1 CFRunLoopRunInMode + 97 13 GraphicsServices 0x02bf12c8 GSEventRunModal + 217 14 GraphicsServices 0x02bf138d GSEventRun + 115 15 UIKit 0x002beb58 UIApplicationMain + 1160 16 TestTempDelete 0x00001eb4 main + 102 17 TestTempDelete 0x00001e45 start + 53

Espero que esto ayude.


Encontré la misma excepción

Aplicación de finalización debido a la excepción no detectada ''NSInternalInconsistencyException'', razón: ''Intentar comenzar una transición modal de mientras que una transición ya está en progreso. Espere a que viewDidAppear / viewDidDisappear sepa que la transición actual se ha completado ''

Como sugerí anteriormente, traté de retrasar la presentación de una transición modal, pero eso realmente no me ayudó. ¡Luego descubrí que tenía varios IBActions conectados al evento TouchUpInside de mi botón! . En mi caso, comenzarían dos IBActions: presentando un selector de personas de manera modal y presentando un selector de imágenes de forma modal. Esto explica el mensaje de error. ¡Comprueba si tienes múltiples IBActions conectados!


Es posible si obtiene esto después de hacer clic en un botón que estaba vinculado a su código en Interface Builder, que tiene dos acciones vinculadas a un botón (tal vez si tenía una vista modal vinculada a un botón, entonces duplicó el botón y enlazó otra vista modal). Esto intentará despedirlos a ambos y, por lo tanto, fallará con ese mensaje.


Lo he modificado ligeramente para que la vista de carga se muestre después de un pequeño retraso, ¡y esto funciona bien! ¡Así que parece ser algo dentro del mismo ciclo de eventos!

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // Show load [self performSelector:@selector(doit) withObject:nil afterDelay:0.1]; } - (void)doit { [self presentModalViewController:loader animated:YES]; }


Me encontré con este problema recientemente y lo corrigí con la sugerencia selector: afterDelay anterior. Solo para agregar, compilé (sin la corrección) bajo la versión beta de iPhone OS 4.0, ¡y NO CRASH! Entonces, el error en XCode parece haberse arreglado en la próxima generación. No es que esto nos haga ningún bien a ninguno de nosotros, pero, para que todos lo sepan, realmente era un error en Xcode y no necesariamente algo que estuviéramos haciendo mal en nuestros estilos de codificación.


Realmente depende de lo que estén haciendo las rutinas de soporte para viewDidAppear . Por ejemplo, si presentModalViewController:animated: no conserva el loader el bloqueo puede deberse a que el UIWindowController intenta hablar sobre el loader que se ha liberado (al final de la rutina que publicó).


Su problema probablemente esté en el método que inits y presenta el método en el que se encuentra viewDidAppear, o en el método init / viewDidLoad / viewWillAppear de LoadViewController.

Establezca algunos puntos de quiebre y siga hasta chocar ...


Tenía exactamente el mismo problema. Lo resolvió con lo sugerido anteriormente ...

[self performSelector:@selector(doit) withObject:nil afterDelay:0.5];

Tuve que usar un retraso de 0.5 segundos. Posiblemente porque estaba realizando presentModalViewController directamente después de un modal UIPickerViewController.


Tuve el mismo problema debido a la falta de coincidencia entre los nombres en

HelpViewController *controller = [[HelpViewController alloc] initWithNibName:@"HelpView" bundle:nil];

y el nombre del archivo .xib real.


Tuve un error similar al hacer clic en un UIButton para abrir una Modal View . UIButton''s oyente de UIControlEventAllEvents de UIControlEventAllEvents a UIControlEventTouchUpInside . Básicamente, estaba disparando la Vista modal en Touch Down Inside y luego nuevamente en Touch Up Inside .


Tuve un problema similar al usar la misma técnica que usted para implementar una vista de carga. Se bloqueaba cuando la vista de carga se descartaba al final de la carga. En mi caso, el problema vino del hecho de que tan pronto como se descartaba la vista de carga, se llamaba de nuevo a viewDidAppear e intentaba presentar la vista de carga de nuevo, lo que presumiblemente desencadenó el bloqueo. Lo arreglé simplemente comprobando si la vista de carga había sido presentada antes:

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if(needDisplayLoader) [self presentModalViewController: loader animated:NO]; }

Luego configuré needDisplayLoader en NO antes de descartar la vista del cargador

Espero que esto ayude...


EXC_BAD_ACCESS es un error de memoria. Probablemente estés tratando de usar un objeto que ya ha sido liberado / desasignado. Esta respuesta ofrece algunos consejos para depurar estos problemas:

Depuración EXC_BAD_ACCESS