- Vue-Contrôleur envoyé un message, même si il a été libéré

Je ne suis pas sûr si quelque chose a changé dans le SDK de l'iPhone 3.0, mais je suis le plus étrange erreur. J'ai une vue contrôleur de hiérarchie où je basculer entre la vue des contrôleurs en fonction de l'interface de l'orientation. À partir de ce que je peux dire, l'erreur est provoquée à chaque fois que je tourne l'interface a-vue-contrôleur qui a été libéré est envoyé un shouldAutorotateToInterfaceOrientation message. C'est la trace de l'erreur:

#0 0x01dc43a7 in ___forwarding___
#1 0x01da06c2 in __forwarding_prep_0___
#2 0x002e6733 in -[UIWindow _shouldAutorotateToInterfaceOrientation:]
#3 0x002e6562 in -[UIWindow _updateToInterfaceOrientation:duration:force:]
#4 0x002e6515 in -[UIWindow _updateInterfaceOrientationFromDeviceOrientation]
#5 0x0004d63a in _nsnote_callback
#6 0x01d8f005 in _CFXNotificationPostNotification
#7 0x0004aef0 in -[NSNotificationCenter postNotificationName:object:userInfo:]
#8 0x0045b454 in -[UIDevice setOrientation:]
#9 0x002d6890 in -[UIApplication handleEvent:withNewEvent:]
#10 0x002d16d3 in -[UIApplication sendEvent:]
#11 0x002d80b5 in _UIApplicationHandleEvent
#12 0x024c2ef1 in PurpleEventCallback
#13 0x01d9bb80 in CFRunLoopRunSpecific
#14 0x01d9ac48 in CFRunLoopRunInMode
#15 0x024c17ad in GSEventRunModal
#16 0x024c1872 in GSEventRun
#17 0x002d9003 in UIApplicationMain
#18 0x00002d50 in main at main.m:14

L'erreur qui est imprimé sur la Console de Débogage avec NSZombieEnabled est:

2009-10-18 20:28:34.404 Restaurants[12428:207] *** -[ToolbarController respondsToSelector:]: message sent to deallocated instance 0x3b2b2a0
(gdb) continue
Current language:  auto; currently objective-c
2009-10-18 20:31:43.496 Restaurants[12428:207] *** NSInvocation: warning: object 0x3b2b2a0 of class '_NSZombie_BeltToolbarController' does not implement methodSignatureForSelector: -- trouble ahead
2009-10-18 20:31:43.496 Restaurants[12428:207] *** NSInvocation: warning: object 0x3b2b2a0 of class '_NSZombie_BeltToolbarController' does not implement doesNotRecognizeSelector: -- abort

Ce que je ne peux pas comprendre, c'est pourquoi le système est en train d'essayer de message de ce contrôleur, même si il a été libéré et est-il un moyen pour indiquer au système que le contrôleur n'existe plus.

[Mise à JOUR]:
J'ai mis en place un exemple de projet de la réplication du bug: télécharger

Charge de l'application, puis de changer le Simulateur de l'orientation un peu de temps de Paysage à Portrait et il devrait se produire. J'ai essayé le même morceau de code sur le téléphone et il se comporte exactement de la même façon, donc ce n'est pas un simulateur de question connexe.

[Mise à JOUR]:
J'ai utilisé une de mes demandes de support technique Apple pour voir si ils peuvent m'aider à aller au fond de cette. Va poster la solution - si elles en ont un, ici. Merci pour l'aide pour l'instant.

OriginalL'auteur Michael Gaylord | 2009-10-18