Авто-релиз MKMapView не вызывает dealloc после того, как UIViewController извлечен

У меня есть следующий код в классе A:

UIViewController *vc = [self viewControllerForItem:item];

где метод viewControllerForItem в моем делегате приложения возвращает UIViewController на основе моего элемента, т.е.

vc = [[[MyCustomViewController alloc] init] autorelease];

return vc;

Затем я нажимаю на вид контроллера:

[self.navigationController pushViewController:vc animated:YES];

Этот VC, который я пытаюсь выдвинуть, представляет собой MKMapView, и я вставил оператор log в метод dealloc, чтобы увидеть, вызывается ли он. В моей памяти, рост растет довольно быстро.

Однако, когда я добавляю следующий код после нажатия VC:

[vc release];

мой класс MKMapView вызывает метод dealloc.

Конечно, это было бы простым решением, если бы класс MKMapView был единственным классом, возвращаемым моим делегатом приложения (или я мог просто проверить, является ли класс VC моим классом MKMapView). Тем не менее, я хотел бы решить коренную проблему этого.

Почему не вызывается dealloc, если я установил autorelease на моем контроллере представления?

Как это возможно, что я могу добавить [vc release] к контроллеру представления, даже если на этом vc используется autorelease?

Спасибо

Редактировать:

Вот дополнительная информация. У меня есть класс viewControllerForItem в моем делегате приложения. Я возвращаю автоматически освобожденный объект в мой другой класс менеджера, где я затем нажимаю контроллер представления. Не запутался ли счет сохранения, когда я возвращаю автоматически освобожденный объект, а затем помещаю его в какой-то другой класс?

Это обратная трассировка / callstack, когда я нажимаю VC и когда вызывается didDissappear mkmapview:

pushVC: (
0   NewHampshire                        0x00254cdf -[CustomViewController navigateToRowId:withLinkBehavior:animated:] + 2111
1   NewHampshire                        0x002534c9 -[CustomViewController webView:shouldStartLoadWithRequest:navigationType:] + 841
2   UIKit                               0x02caf288 -[UIWebView webView:decidePolicyForNavigationAction:request:frame:decisionListener:] + 318
3   UIKit                               0x02cb1854 -[UIWebViewWebViewDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:] + 77
4   CoreFoundation                      0x05d0bd1d __invoking___ + 29
5   CoreFoundation                      0x05d0bc2a -[NSInvocation invoke] + 362
6   CoreFoundation                      0x05d0bdaa -[NSInvocation invokeWithTarget:] +     74
7   WebKit                              0x0a4d811d -[_WebSafeForwarder forwardInvocation:] + 157
8   CoreFoundation                      0x05d076da ___forwarding___ + 458
9   CoreFoundation                      0x05d074ee _CF_forwarding_prep_0 + 14
10  CoreFoundation                      0x05d0bd1d __invoking___ + 29
11  CoreFoundation                      0x05d0bc2a -[NSInvocation invoke] + 362
12  WebCore                             0x09533b29 _ZL20HandleDelegateSourcePv + 121
13  CoreFoundation                      0x05ca083f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
14  CoreFoundation                      0x05ca01cb __CFRunLoopDoSources0 + 235
15  CoreFoundation                      0x05cbd29e __CFRunLoopRun + 910
16  CoreFoundation                      0x05cbcac3 CFRunLoopRunSpecific + 467
17  CoreFoundation                      0x05cbc8db CFRunLoopRunInMode + 123
18  GraphicsServices                    0x059749e2 GSEventRunModal + 192
19  GraphicsServices                    0x05974809 GSEventRun + 104
20  UIKit                               0x02a6ed3b UIApplicationMain + 1225
21  NewHampshire                        0x000150dd main + 125
22  libdyld.dylib                       0x04fab70d start + 1
)

disappear: (
0   NewHampshire                        0x0014631d -[CustomAdvancedGPSMapViewController viewDidDisappear:] + 173
1   UIKit                               0x02b85bac -[UIViewController _setViewAppearState:isAnimating:] + 341
2   UIKit                               0x02b86328 -[UIViewController __viewDidDisappear:] + 150
3   UIKit                               0x02b86461 -[UIViewController _endAppearanceTransition:] + 306
4   UIKit                               0x02ba549a -[UINavigationController navigationTransitionView:didEndTransition:fromView:toView:] + 738
5   UIKit                               0x02b9d403 __49-[UINavigationController _startCustomTransition:]_block_invoke + 206
6   UIKit                               0x03176740 -[_UIViewControllerTransitionContext completeTransition:] + 99
7   UIKit                               0x02a63454 __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke105 + 680
8   UIKit                               0x02ad1005 -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:] + 306
9   UIKit                               0x02abac6c -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 267
10  UIKit                               0x02abaf58 -[UIViewAnimationState animationDidStop:finished:] + 80
11  QuartzCore                          0x028b2a44 _ZN2CA5Layer23run_animation_callbacksEPv + 304
12  libdispatch.dylib                   0x04d194b0 _dispatch_client_callout + 14
13  libdispatch.dylib                   0x04d0775e _dispatch_main_queue_callback_4CF + 340
14  CoreFoundation                      0x05d7ca5e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14
15  CoreFoundation                      0x05cbd6bb __CFRunLoopRun + 1963
16  CoreFoundation                      0x05cbcac3 CFRunLoopRunSpecific + 467
17  CoreFoundation                      0x05cbc8db CFRunLoopRunInMode + 123
18  GraphicsServices                    0x059749e2 GSEventRunModal + 192
19  GraphicsServices                    0x05974809 GSEventRun + 104
20  UIKit                               0x02a6ed3b UIApplicationMain + 1225
21  NewHampshire                        0x0001507d main + 125
22  libdyld.dylib                       0x04fab70d start + 1
)

Решение: Хотя ответы в этом посте не дали точного решения моей проблемы, Даррен определенно направил меня в правильном направлении с помощью инструмента инструментов. Я обнаружил, что виновником является объект CABasicAnimation, который не был выпущен должным образом.

в методе viewWillDisappear я добавил следующее для объекта CABasicAnimation:

self.rotationAnimation.delegate = nil;
self.rotationAnimation = nil; 

Ответы на вопрос(2)

Ваш ответ на вопрос