C'est vraiment bizarre ...iPhone interface utilisateur addSubview provoquant exception concurrency
je lance mon application, et pendant son ouverture et les vues sont en train de construire je reçois:
Collection <CALayerArray: 0x124650> was mutated while being enumerated.
La trace de code passe par ce qui suit:
main
UIApplicationMain
-[UIApplication _run]
CFRunLoopRunInMode
CFRunLoopRunSpecific
_UIApplicationHandleEvent
-[UIApplication sendEvent:]
-[UIApplication handleEvent:withNewEvent:]
-[UIApplication _runWithURL:sourceBundleID:]
-[UIApplication _performInitilizationWithURL:sourceBundleID:]
-[AppDelegate applicationDidFinishLaunching:]
+[Controller initializeController] //This is my own function
[window addSubview: pauseMenuController.view] //This is the last point of my code it goes through
-[UIView(Hierarchy) addSubview:]
-[UIView(Internal) _addSubview:positioned:relativeTo:]
-[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:]
-[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
-[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
_NSFastEnumerationMutationHandler
objc_exception_throw
J'ai couru les lots de jeu et beaucoup, beaucoup de fois et je ne l'ai jamais vu cela, puis tout à coup, il surgit. La chose étrange est que je ne crée pas d'autres threads (que je connais) jusqu'à après ce code est appelé. Ce sera plus facile pour moi de déboguer ceci si quelqu'un peut me donner une explication de ce qui pourrait être modifié pendant qu'il est accédé dans un UIView. Cela a-t-il quelque chose à voir avec l'ajout de quelque chose à la vue alors qu'il ajoute déjà quelque chose, peut-être? Des idées?
Pouvez-vous élaborer sur ce qui est différent dans le comportement des applications lorsque vous obtenez l'erreur? Crash ... pas de vue ... etc ... – coneybeare
Pouvez-vous poster du code? Le simple fait d'appeler -addSubview: ne peut pas causer ce problème, et sans code, nous ne pouvons que deviner aveuglément. –