Pregunta

He estado tratando de resolver esto durante los últimos dos días. No se puede entender por qué mi aplicación se bloquea.

Estoy usando JASidePanel Biblioteca para lograr el efecto del panel en mi aplicación. El panel lateral izquierdo es una vista de tabla que actúa como la guía de navegación para el panel central. En un escenario, cuando se selecciona una opción en particular en el panel lateral izquierdo (cuando esto está abierto), se supone que el panel central simplemente cierre el panel lateral izquierdo y presenta otro controlador de navegación (con un controlador de vista raíz consistente). Sin embargo, a veces esta transición bloquea mi aplicación.

Observé que el bloqueo no ocurre en el código de Jasidepanel o en el código del controlador de la vista del panel central ([self presentViewController:self.cityNavigationController animated:YES completion:nil];). Observé claramente que la aplicación se bloquea debido a algún bloqueo interno debido al marco de iOS, revisé cada instrucción por instrucción y lo descubrí.

Pero aún así, creo que estoy haciendo algo mal. ¿Alguien puede sugerirme por qué podría suceder este choque? ¿Qué debo estar buscando para resolver este problema? ¿Algún paso o procedimiento que pueda/debo seguir para detectar el problema?

Se agradece cualquier ayuda.

Registro de dispositivos:

Thread 0 Crashed:
0   libobjc.A.dylib                 0x3a085b26 objc_msgSend + 6
1   UIKit                           0x3257c788 -[UISearchBar _didMoveFromWindow:toWindow:] + 152
2   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
3   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
4   UIKit                           0x324bb5e2 -[UIScrollView _didMoveFromWindow:toWindow:] + 46
5   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
6   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
7   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
8   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
9   UIKit                           0x32499e68 __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 108
10  Foundation                      0x30688d98 -[NSISEngine withBehaviors:performModifications:] + 208
11  UIKit                           0x32499cf2 -[UIView(Hierarchy) _postMovedFromSuperview:] + 294
12  UIKit                           0x324a6998 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1400
13  UIKit                           0x324a6412 -[UIView(Hierarchy) addSubview:] + 26
14  UIKit                           0x32587d8a -[UITransitionView transition:fromView:toView:removeFromView:] + 974
15  UIKit                           0x32587998 -[UIViewControllerBuiltinTransitionViewAnimator animateTransition:] + 444
16  UIKit                           0x32587406 __101-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:animation:]_block_invoke_2 + 1250
17  UIKit                           0x3251afb6 _applyBlockToCFArrayCopiedToStack + 314
18  UIKit                           0x324931ee _afterCACommitHandler + 426
19  CoreFoundation                  0x2fcf31ca __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
20  CoreFoundation                  0x2fcf0b6c __CFRunLoopDoObservers + 280
21  CoreFoundation                  0x2fcf0eae __CFRunLoopRun + 726
22  CoreFoundation                  0x2fc5bc22 CFRunLoopRunSpecific + 518
23  CoreFoundation                  0x2fc5ba06 CFRunLoopRunInMode + 102
24  GraphicsServices                0x3493a27e GSEventRunModal + 134
25  UIKit                           0x324ff044 UIApplicationMain + 1132
26  Housing India                   0x000a2606 main (main.m:16)
27  libdyld.dylib                   0x3a592ab4 start + 0
¿Fue útil?

Solución

Bueno, si para alguien esto ayuda.

El problema era con el marco iOS. El problema fue con la implementación de Uinavigation Controller. El choque estaba ocurriendo dentro del marco en sí. La única salida posible era instanciar el controlador de navegación cada vez, antes de presentarlo. Esto disminuye el rendimiento, pero no tenía otra opción. Apple, realmente tiene muchas limitaciones y suposiciones. :PAGS

Explicación: Necesitábamos presentar un controlador de navegación con animación modal. Estábamos tratando de evitar la instanciación del controlador de navegación una y otra vez instanciándolo una vez y tratando de reutilizarlo. Sin embargo, debido a esto, observamos un accidente que ocurre en algún momento. No sepa exactamente lo que significa el choque, pero lo arregló instanciándolo una y otra vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top