我有一個好奇的殭屍bug,似乎已經爬出了長期的應用程序的木製品。我喜歡想我知道我在做什麼,而殭屍通常是直接修復的,但這個讓我感到困惑。presentModalViewController導致神祕的殭屍
儀器報告,殭屍對象是我作爲模態視圖呈現的視圖(MyPopUpViewController)。以下是介紹模態視圖控制器的代碼。
MyPopUpViewController *popUpViewController =
[[MyPopUpViewController alloc] init];
UINavigationController *navigationController =
[[UINavigationController alloc] initWithRootViewController:popUpViewController];
[popUpViewController release];
[self.tabBarController presentModalViewController:navigationController animated:YES]; // zombie occurs here
[navigationController release];
在MyPopUpViewConroller,當導航欄上的用戶抽頭「完成」,模態視圖控制器被駁回 - 標準的東西,並且作品99選自100倍(或更多)。但是,如果我快速進入和退出模態對話框,並且只在模擬器上(我見過),我會得到下面報告的殭屍。
現在,我相信如果我將MyPopUpViewController推到導航控制器,它將被導航控制器保留,所以我可以安全地釋放它。同樣,tabBarController將保留導航控制器,所以我可以安全地釋放它,如代碼所示。
從儀器診斷,這是我唯一的保留/ MyPopUpViewController的版本(見在「負責任的」塔「的myapp」引用),這是iOS的內部稍後[明顯?]導致殭屍。
我很感激爲什麼我看到這個殭屍的建議。謝謝。
# Address Category Event Type RefCt Timestamp Size Responsible Library Responsible Caller
0 0x14532980 MyPopUpViewController Malloc 1 00:10.669.925 176 myapp -[MyPopUpViewController tableView:didSelectRowAtIndexPath:]
1 0x14532980 MyPopUpViewController Retain 2 00:10.670.707 0 UIKit -[UIViewController _addChildViewController:performHierarchyCheck:]
2 0x14532980 MyPopUpViewController Retain 3 00:10.670.721 0 UIKit -[UINavigationController topViewController]
3 0x14532980 MyPopUpViewController Autorelease <null> 00:10.670.723 0 UIKit -[UINavigationController topViewController]
4 0x14532980 MyPopUpViewController Release 2 00:10.671.467 0 myapp -[MyPopUpViewController tableView:didSelectRowAtIndexPath:]
5 0x14532980 MyPopUpViewController Retain 3 00:10.671.494 0 UIKit -[UINavigationController topViewController]
6 0x14532980 MyPopUpViewController Autorelease <null> 00:10.671.496 0 UIKit -[UINavigationController topViewController]
7 0x14532980 MyPopUpViewController Retain 4 00:10.671.497 0 UIKit -[UINavigationController topViewController]
8 0x14532980 MyPopUpViewController Autorelease <null> 00:10.671.497 0 UIKit -[UINavigationController topViewController]
9 0x14532980 MyPopUpViewController Retain 5 00:10.672.129 0 UIKit -[UINavigationController topViewController]
10 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.130 0 UIKit -[UINavigationController topViewController]
11 0x14532980 MyPopUpViewController Retain 6 00:10.672.131 0 UIKit -[UINavigationController topViewController]
12 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.132 0 UIKit -[UINavigationController topViewController]
13 0x14532980 MyPopUpViewController Retain 7 00:10.672.138 0 UIKit -[UINavigationController topViewController]
14 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.139 0 UIKit -[UINavigationController topViewController]
15 0x14532980 MyPopUpViewController Retain 8 00:10.672.140 0 UIKit -[UINavigationController topViewController]
16 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.141 0 UIKit -[UINavigationController topViewController]
17 0x14532980 MyPopUpViewController Retain 9 00:10.672.489 0 UIKit -[UINavigationController topViewController]
18 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.490 0 UIKit -[UINavigationController topViewController]
19 0x14532980 MyPopUpViewController Retain 10 00:10.672.491 0 UIKit -[UINavigationController topViewController]
20 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.492 0 UIKit -[UINavigationController topViewController]
21 0x14532980 MyPopUpViewController Retain 11 00:10.672.796 0 UIKit -[UINavigationController topViewController]
22 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.797 0 UIKit -[UINavigationController topViewController]
23 0x14532980 MyPopUpViewController Retain 12 00:10.672.801 0 UIKit -[UINavigationController topViewController]
24 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.802 0 UIKit -[UINavigationController topViewController]
25 0x14532980 MyPopUpViewController Retain 13 00:10.672.804 0 UIKit -[UINavigationController topViewController]
26 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.804 0 UIKit -[UINavigationController topViewController]
27 0x14532980 MyPopUpViewController Retain 14 00:10.672.829 0 UIKit -[UINavigationController topViewController]
28 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.830 0 UIKit -[UINavigationController topViewController]
29 0x14532980 MyPopUpViewController Retain 15 00:10.672.830 0 UIKit -[UINavigationController topViewController]
30 0x14532980 MyPopUpViewController Autorelease <null> 00:10.672.832 0 UIKit -[UINavigationController topViewController]
31 0x14532980 MyPopUpViewController Retain 16 00:10.686.674 0 UIKit -[UINib instantiateWithOwner:options:]
32 0x14532980 MyPopUpViewController Retain 17 00:10.686.696 0 UIKit +[UIProxyObject addMappingFromIdentifier:toObject:forCoder:]
33 0x14532980 MyPopUpViewController Retain 18 00:10.687.241 0 UIKit -[UIProxyObject initWithCoder:]
34 0x14532980 MyPopUpViewController Retain 19 00:10.687.244 0 UIKit -[UIRuntimeConnection initWithCoder:]
35 0x14532980 MyPopUpViewController Retain 20 00:10.687.254 0 UIKit -[UIRuntimeConnection initWithCoder:]
36 0x14532980 MyPopUpViewController Retain 21 00:10.687.261 0 UIKit -[UIRuntimeConnection initWithCoder:]
37 0x14532980 MyPopUpViewController Retain 22 00:10.687.270 0 UIKit -[UIRuntimeConnection initWithCoder:]
38 0x14532980 MyPopUpViewController Retain 23 00:10.689.785 0 UIKit UINibDecoderDecodeObjectForValue
39 0x14532980 MyPopUpViewController Retain 24 00:10.689.806 0 UIKit UINibDecoderDecodeObjectForValue
40 0x14532980 MyPopUpViewController Release 23 00:10.690.037 0 UIKit -[UINib instantiateWithOwner:options:]
41 0x14532980 MyPopUpViewController Release 22 00:10.690.056 0 UIKit +[UIProxyObject removeMappingsForCoder:]
42 0x14532980 MyPopUpViewController Release 21 00:10.690.086 0 UIKit -[UINibDecoder finishDecoding]
43 0x14532980 MyPopUpViewController Release 20 00:10.690.117 0 UIKit -[UINibDecoder finishDecoding]
44 0x14532980 MyPopUpViewController Release 19 00:10.690.124 0 UIKit -[UIRuntimeConnection dealloc]
45 0x14532980 MyPopUpViewController Release 18 00:10.690.134 0 UIKit -[UIRuntimeConnection dealloc]
46 0x14532980 MyPopUpViewController Release 17 00:10.690.155 0 UIKit -[UINibDecoder finishDecoding]
47 0x14532980 MyPopUpViewController Release 16 00:10.690.166 0 UIKit -[UIRuntimeConnection dealloc]
48 0x14532980 MyPopUpViewController Release 15 00:10.690.174 0 UIKit -[UIRuntimeConnection dealloc]
49 0x14532980 MyPopUpViewController Retain 16 00:10.690.494 0 UIKit -[UINavigationController topViewController]
50 0x14532980 MyPopUpViewController Autorelease <null> 00:10.690.497 0 UIKit -[UINavigationController topViewController]
51 0x14532980 MyPopUpViewController Retain 17 00:10.690.510 0 UIKit -[UINavigationController topViewController]
52 0x14532980 MyPopUpViewController Autorelease <null> 00:10.690.511 0 UIKit -[UINavigationController topViewController]
53 0x14532980 MyPopUpViewController Retain 18 00:10.690.521 0 UIKit -[UINavigationController topViewController]
54 0x14532980 MyPopUpViewController Autorelease <null> 00:10.690.522 0 UIKit -[UINavigationController topViewController]
55 0x14532980 MyPopUpViewController Retain 19 00:10.695.693 0 UIKit -[UINavigationController topViewController]
56 0x14532980 MyPopUpViewController Autorelease <null> 00:10.695.693 0 UIKit -[UINavigationController topViewController]
57 0x14532980 MyPopUpViewController Retain 20 00:10.695.704 0 UIKit -[UINavigationController _startTransition:fromViewController:toViewController:]
58 0x14532980 MyPopUpViewController Release 19 00:10.695.721 0 UIKit -[UINavigationController _startTransition:fromViewController:toViewController:]
59 0x14532980 MyPopUpViewController Retain 20 00:10.701.163 0 UIKit -[UINavigationController topViewController]
60 0x14532980 MyPopUpViewController Autorelease <null> 00:10.701.164 0 UIKit -[UINavigationController topViewController]
61 0x14532980 MyPopUpViewController Retain 21 00:10.701.212 0 UIKit -[UIResponder becomeFirstResponder]
62 0x14532980 MyPopUpViewController Release 20 00:10.701.235 0 UIKit -[UIResponder becomeFirstResponder]
63 0x14532980 MyPopUpViewController Retain 21 00:10.701.302 0 UIKit -[UINavigationController topViewController]
64 0x14532980 MyPopUpViewController Autorelease <null> 00:10.701.302 0 UIKit -[UINavigationController topViewController]
65 0x14532980 MyPopUpViewController Retain 22 00:10.701.304 0 UIKit -[UINavigationController topViewController]
66 0x14532980 MyPopUpViewController Autorelease <null> 00:10.701.304 0 UIKit -[UINavigationController topViewController]
67 0x14532980 MyPopUpViewController Retain 23 00:10.701.342 0 UIKit -[UINavigationController navigationTransitionView:didEndTransition:fromView:toView:]
68 0x14532980 MyPopUpViewController Release 22 00:10.701.356 0 UIKit -[UINavigationController navigationTransitionView:didEndTransition:fromView:toView:]
69 0x14532980 MyPopUpViewController Retain 23 00:10.701.386 0 UIKit -[UINavigationController topViewController]
70 0x14532980 MyPopUpViewController Autorelease <null> 00:10.701.387 0 UIKit -[UINavigationController topViewController]
71 0x14532980 MyPopUpViewController Retain 24 00:10.701.399 0 UIKit -[UIResponder becomeFirstResponder]
72 0x14532980 MyPopUpViewController Release 23 00:10.701.414 0 UIKit -[UIResponder becomeFirstResponder]
73 0x14532980 MyPopUpViewController Release 22 00:10.701.762 0 GraphicsServices GSEventRunModal
74 0x14532980 MyPopUpViewController Release 21 00:10.701.774 0 GraphicsServices GSEventRunModal
75 0x14532980 MyPopUpViewController Release 20 00:10.701.775 0 GraphicsServices GSEventRunModal
76 0x14532980 MyPopUpViewController Release 19 00:10.701.809 0 GraphicsServices GSEventRunModal
77 0x14532980 MyPopUpViewController Release 18 00:10.701.821 0 GraphicsServices GSEventRunModal
78 0x14532980 MyPopUpViewController Release 17 00:10.701.943 0 GraphicsServices GSEventRunModal
79 0x14532980 MyPopUpViewController Release 16 00:10.701.945 0 GraphicsServices GSEventRunModal
80 0x14532980 MyPopUpViewController Release 15 00:10.701.947 0 GraphicsServices GSEventRunModal
81 0x14532980 MyPopUpViewController Release 14 00:10.701.985 0 GraphicsServices GSEventRunModal
82 0x14532980 MyPopUpViewController Release 13 00:10.701.985 0 GraphicsServices GSEventRunModal
83 0x14532980 MyPopUpViewController Release 12 00:10.701.989 0 GraphicsServices GSEventRunModal
84 0x14532980 MyPopUpViewController Release 11 00:10.701.989 0 GraphicsServices GSEventRunModal
85 0x14532980 MyPopUpViewController Release 10 00:10.701.990 0 GraphicsServices GSEventRunModal
86 0x14532980 MyPopUpViewController Release 9 00:10.702.017 0 GraphicsServices GSEventRunModal
87 0x14532980 MyPopUpViewController Release 8 00:10.702.018 0 GraphicsServices GSEventRunModal
88 0x14532980 MyPopUpViewController Release 7 00:10.702.039 0 GraphicsServices GSEventRunModal
89 0x14532980 MyPopUpViewController Release 6 00:10.702.040 0 GraphicsServices GSEventRunModal
90 0x14532980 MyPopUpViewController Release 5 00:10.702.041 0 GraphicsServices GSEventRunModal
91 0x14532980 MyPopUpViewController Release 4 00:10.702.042 0 GraphicsServices GSEventRunModal
92 0x14532980 MyPopUpViewController Release 3 00:10.702.051 0 GraphicsServices GSEventRunModal
93 0x14532980 MyPopUpViewController Release 2 00:10.702.052 0 GraphicsServices GSEventRunModal
94 0x14532980 MyPopUpViewController Release 1 00:10.702.096 0 GraphicsServices GSEventRunModal
95 0x14532980 MyPopUpViewController Retain 2 00:10.702.195 0 UIKit -[UINavigationController topViewController]
96 0x14532980 MyPopUpViewController Autorelease <null> 00:10.702.196 0 UIKit -[UINavigationController topViewController]
97 0x14532980 MyPopUpViewController Release 1 00:10.709.439 0 QuartzCore CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*)
98 0x14532980 MyPopUpViewController Retain 2 00:11.110.856 0 UIKit -[UINavigationController topViewController]
99 0x14532980 MyPopUpViewController Autorelease <null> 00:11.110.856 0 UIKit -[UINavigationController topViewController]
100 0x14532980 MyPopUpViewController Retain 3 00:11.110.858 0 UIKit -[UINavigationController topViewController]
101 0x14532980 MyPopUpViewController Autorelease <null> 00:11.110.859 0 UIKit -[UINavigationController topViewController]
102 0x14532980 MyPopUpViewController Retain 4 00:11.110.924 0 UIKit -[UINavigationController topViewController]
103 0x14532980 MyPopUpViewController Autorelease <null> 00:11.110.925 0 UIKit -[UINavigationController topViewController]
104 0x14532980 MyPopUpViewController Release 3 00:11.111.052 0 GraphicsServices GSEventRunModal
105 0x14532980 MyPopUpViewController Release 2 00:11.111.053 0 GraphicsServices GSEventRunModal
106 0x14532980 MyPopUpViewController Release 1 00:11.111.054 0 GraphicsServices GSEventRunModal
107 0x14532980 MyPopUpViewController Retain 2 00:12.862.301 0 UIKit -[UINavigationController topViewController]
108 0x14532980 MyPopUpViewController Autorelease <null> 00:12.862.303 0 UIKit -[UINavigationController topViewController]
109 0x14532980 MyPopUpViewController Retain 3 00:12.862.304 0 UIKit -[UINavigationController topViewController]
110 0x14532980 MyPopUpViewController Autorelease <null> 00:12.862.305 0 UIKit -[UINavigationController topViewController]
111 0x14532980 MyPopUpViewController Retain 4 00:12.862.370 0 UIKit -[UINavigationController topViewController]
112 0x14532980 MyPopUpViewController Autorelease <null> 00:12.862.371 0 UIKit -[UINavigationController topViewController]
113 0x14532980 MyPopUpViewController Retain 5 00:12.862.373 0 UIKit -[UINavigationController visibleViewController]
114 0x14532980 MyPopUpViewController Autorelease <null> 00:12.862.374 0 UIKit -[UINavigationController visibleViewController]
115 0x14532980 MyPopUpViewController Retain 6 00:12.862.376 0 UIKit -[UINavigationController visibleViewController]
116 0x14532980 MyPopUpViewController Autorelease <null> 00:12.862.377 0 UIKit -[UINavigationController visibleViewController]
117 0x14532980 MyPopUpViewController Retain 7 00:12.862.774 0 UIKit -[UINavigationController topViewController]
118 0x14532980 MyPopUpViewController Autorelease <null> 00:12.862.776 0 UIKit -[UINavigationController topViewController]
119 0x14532980 MyPopUpViewController Release 6 00:12.877.586 0 Foundation -[NSAutoreleasePool release]
120 0x14532980 MyPopUpViewController Release 5 00:12.877.604 0 Foundation -[NSAutoreleasePool release]
121 0x14532980 MyPopUpViewController Release 4 00:12.877.604 0 Foundation -[NSAutoreleasePool release]
122 0x14532980 MyPopUpViewController Release 3 00:12.877.605 0 Foundation -[NSAutoreleasePool release]
123 0x14532980 MyPopUpViewController Release 2 00:12.877.610 0 Foundation -[NSAutoreleasePool release]
124 0x14532980 MyPopUpViewController Release 1 00:12.877.611 0 Foundation -[NSAutoreleasePool release]
125 0x14532980 MyPopUpViewController Retain 2 00:13.292.620 0 UIKit -[UINavigationController topViewController]
126 0x14532980 MyPopUpViewController Autorelease <null> 00:13.292.621 0 UIKit -[UINavigationController topViewController]
127 0x14532980 MyPopUpViewController Release 1 00:13.292.700 0 UIKit -[UIViewController dealloc]
128 0x14532980 MyPopUpViewController Release 0 00:13.292.853 0 GraphicsServices GSEventRunModal
129 0x14532980 MyPopUpViewController Zombie -1 00:13.439.920 0 UIKit -[UIPickerView _sendSelectionChangedForComponent:]
感謝您的回覆。是的,模態視圖提供了一個選擇器 - 殭屍診斷報告會提供更高的對象嗎? – Snips 2012-03-26 19:06:57
請參閱我的編輯... – sergio 2012-03-26 21:07:05
感謝您對調用委託的額外編輯,我在第一條評論後仔細檢查了代碼,並得出了相同的結論,並提供了相同的建議修復和測試。目前正在進行 - 這總是一個棘手的錯誤挑釁,但我沒有看到這個問題以來的問題。我認爲這很微妙,但適合證據(模擬器與iPhone等時機差異)。感謝您的幫助。 – Snips 2012-03-26 22:19:35