Wyświetl kontroler wysyłający wiadomość, mimo że został zwolniony

Nie jestem pewien, czy coś zmieniło się w iPhone SDK 3.0, ale otrzymuję najdziwniejszy błąd. Mam hierarchię kontrolerów widoku, w której przełączam między kontrolerami widoku w zależności od orientacji interfejsu. Z tego, co mogę powiedzieć, błąd jest powodowany, gdy obracam interfejs, a kontroler widoku, który został zwolniony, wysyła komunikat shouldAutorotateToInterfaceOrientation. To jest ślad za błąd:

#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

Błąd drukowany w konsoli debugowania za pomocą NSZombieEnabled to:

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

Nie mogę zrozumieć, dlaczego system próbuje przesłać komunikat do tego kontrolera, mimo że został zwolniony i czy istnieje sposób, aby powiedzieć systemowi, że kontroler już nie istnieje.

[AKTUALIZACJA]: Przygotowałem przykładowy projekt replikujący błąd:Ściągnij

Załaduj aplikację, a następnie zmień orientację Symulatora kilka razy z Krajobrazu na Portret i powinna się pojawić. Próbowałem tego samego fragmentu kodu na telefonie fizycznym i zachowuje się dokładnie w ten sam sposób, więc nie jest to problem związany z symulatorem.

[AKTUALIZACJA]: Zużyłem jedno z moich próśb o wsparcie w zespole technicznym Apple, aby sprawdzić, czy mogą mi pomóc dotrzeć do sedna tego. Opublikuje rozwiązanie - jeśli ma takie rozwiązanie - tutaj. Dziękuję za pomoc do tej pory.

questionAnswers(9)

yourAnswerToTheQuestion