Pergunta

Eu tenho tentado resolver isso nos últimos dois dias. Incapaz de entender por que meu aplicativo trava.

estou a usar JASidePanel Biblioteca para obter efeito do painel no meu aplicativo. O painel lateral esquerdo é uma visão de mesa que atua como o guia de navegação para o painel central. Em um cenário, quando uma opção específica é selecionada no painel lateral esquerdo (quando está aberto), o painel central deve fechar o painel lateral esquerdo e apresentar outro controlador de navegação (com um controlador de exibição de raiz consistente). No entanto, às vezes essa transição trava meu aplicativo.

Eu observei que o acidente não acontece no código do Jasidepanel ou no meu código do controlador de exibição do painel central ([self presentViewController:self.cityNavigationController animated:YES completion:nil];). Eu observei claramente que o aplicativo trava devido a alguma falha interna por causa da estrutura do iOS, passei por cada instrução por instrução e descobri isso.

Mas ainda assim, acho que estou fazendo algo errado. Alguém pode me sugerir por que esse acidente pode acontecer? O que devo procurar para resolver esse problema? Alguma etapa ou procedimento que eu possa seguir para detectar o problema?

Qualquer ajuda é apreciada.

Log de dispositivo:

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
Foi útil?

Solução

Bem, se para alguém, isso ajudar.

O problema estava com a estrutura do iOS. O problema foi com a implementação do UinavigationController. O acidente estava acontecendo dentro da estrutura em si. A única saída possível foi instanciar o controlador de navegação sempre, antes de apresentá -lo. Isso diminui o desempenho, mas não tinha outra opção. A Apple, realmente tem muitas limitações e suposições. : P

Explicação: Precisávamos apresentar um controlador de navegação com animação modal. Estávamos tentando evitar a instanciação do controlador de navegação repetidamente instantando -o uma vez e tentando reutilizá -lo. No entanto, por isso, observamos um acidente acontecendo em algum momento. Não saiba exatamente o que significa o acidente, mas o corrigiu instantando -o repetidamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top