2012-03-26 20 views
1

私は長年のアプリで木工のうねりが詰まっているように見える興味深いゾンビのバグを持っています。私は自分が何をやっているのか知っていると思うのが好きだし、ゾンビは普通は簡単に修正することができますが、これは私には困惑しています。presentModalViewController不思議なゾンビの結果

ゾンビオブジェクトは私がモーダルビュー(MyPopUpViewController)として表示しているビューであると、Instrumentsは報告しています。モーダル・ビュー・コントローラーを表すコードは次のとおりです。 MyPopUpViewConroller内

MyPopUpViewController *popUpViewController = 
        [[MyPopUpViewController alloc] init]; 

UINavigationController *navigationController = 
        [[UINavigationController alloc] initWithRootViewController:popUpViewController]; 

[popUpViewController release]; 

[self.tabBarController presentModalViewController:navigationController animated:YES]; // zombie occurs here 

       [navigationController release]; 

ユーザーがナビゲーションバー上の[完了]をタップするとき、モーダルビューコントローラが却下された - 標準のものを、100倍(またはそれ以上)のうち、99が動作します。

しかし、私がモーダルダイアログに素早く出入りしていて、シミュレータ(私が見たことがある)上でのみ、ゾンビが以下のように報告されます。

私は、MyPopUpViewControllerをナビゲーションコントローラにプッシュするとナビゲーションコントローラによって保持されるので、私はそれを解放しても安全だと思います。同様に、tabBarControllerはナビゲーションコントローラを保持するので、コードに示されているように、それを解放することもできます。

これらは、私の唯一のMyPopUpViewControllerの保持/リリース(「Responsible」列の「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:] 

答えて

0

ゾンビはMyPopUpViewControllerの内部で管理するオブジェクトにできますか?ゾンビのエラーメッセージが[UIPickerView _sendSelectionChangedForComponent:]を参照していることがわかりました。これはコントローラーとは何が関係しているのだろうか?

UIPickerは、の後にモーダルが解除された後に、その代理人にメッセージを送信しようとしている可能性があります(私はコントローラと思われます)。これを修正する方法の1つは、コントローラーのreleaseメソッドでUIPickerdelegateプロパティをnilに設定することです。これを試してみてください。私はそれが助けて欲しいです....

+0

あなたのお返事ありがとうございます。はい、モーダルビューではピッカーが表示されます - ゾンビ診断で上位オブジェクトがレポートされますか? – Snips

+0

私の編集を参照してください... – sergio

+0

デリゲートへの呼び出しに関して追加の編集をしていただきありがとうございます。私は最初のコメントの後にコードを精査していましたが、同じ結論に達しました。現在のところ進行中です - これは常に厄介なバグでしたが、この修正から問題は見られませんでした。私はそれが非常に微妙だと思うが、証拠(シミュレータとiPhoneのタイミングの違いなど)に合っている。ご協力ありがとうございました。 – Snips