app mon iPhone se bloque après l'avoir ouvert du fond et en sélectionnant l'onglet atIndex: 0
-
28-10-2019 - |
Question
Je ne peux pas comprendre cela. Lorsque je clique sur un lien pour ouvrir Safari à partir de mon application, parcourir à travers la page Web, puis revenir à mon application, je peux ouvrir et de parcourir deux tabBarItems
dans mon UITabBar
. Mais, lorsque je tente de sélectionner celui atIndex: 0
, je reçois un EXEC_BAD_ACCESS
et ce qui suit :(. Aider quelqu'un peut me comprendre comment faire ce pas le cas? Je n'avons aucun code qui est exécuté dans will
ou didEnterBackground
ou Foreground
. Aucun. le problème doit être dans le UIViewController
pour le premier onglet. (Oh, et je ne sais pas pourquoi il est l'ajout d'un sous-vue. connexes?) pensées.
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x0109ba63 objc_msgSend + 23
1 UIKit 0x0031f3df -[UIView(Internal) _didMoveFromWindow:toWindow:] + 966
2 UIKit 0x0031f1b0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407
3 UIKit 0x0031f1b0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407
4 UIKit 0x0031f1b0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407
5 UIKit 0x0031f1b0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407
6 UIKit 0x0031f1b0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407
7 UIKit 0x0031dfc4 -[UIView(Hierarchy) _postMovedFromSuperview:] + 166
8 UIKit 0x00316dfc -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1080
9 UIKit 0x0031514f -[UIView(Hierarchy) addSubview:] + 57
10 UIKit 0x003725ac -[UITransitionView transition:fromView:toView:] + 563
11 UIKit 0x00371955 -[UITransitionView transition:toView:] + 129
12 UIKit 0x003a6383 -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 459
13 UIKit 0x003a4d86 -[UITabBarController transitionFromViewController:toViewController:] + 64
14 UIKit 0x003a6b7e -[UITabBarController _setSelectedViewController:] + 263
15 UIKit 0x003a69ed -[UITabBarController _tabBarItemClicked:] + 352`
La solution
Le BAD_ACCESS signifie que vous accédez probablement quelque chose que les points à la mémoire qui a été libéré. Dans la situation que vous décrivez, il est très possible que votre point de vue déchargent en raison d'un faible avertissement de mémoire - en particulier ceux qui ne sont pas visibles. Si vous n'êtes pas prêt pour ce déchargement, lorsque les rechargements de vue, les mauvaises choses se produisent habituellement. Assurez-vous une gestion appropriée de votre méthode de viewDidUnload et l'viewDidLoad réciproque dans vos contrôleurs de vue.