经过一天多的时间阅读问题并尝试应用答案,我必须提出更多帮助。
我的ios6应用程序在主屏幕上有一个表格视图。选择一个单元格后,我们使用UINavigationBar访问一个视图控制器,该控制器有一个自定义的“后退”按钮,调用此方法:
- (IBAction)goback:(id)sender {
[SVProgressHUD dismiss];
if(self.presentingViewController) {
NSLog(@" Dismissing View Controller: %@.", self.presentingViewController);
[self dismissViewControllerAnimated:NO completion:nil];
}
}
通常,此方法效果很好。如果我们在加载内容之后非常快速地按下“后退”按钮(使用json和AFNetworking),它只会崩溃。 5秒后,后退按钮工作正常,但如果我们在加载后立即点击它,我们会收到此错误:
[28103:c07] Dismissing View Controller: <UITabBarController: 0x7578170>.
[28103:c07] *** -[CustomViewController respondsToSelector:]: message sent to deallocated instance 0x1257cf70
显然,这是一个记忆问题。这就是我试图追踪“僵尸”的原因。分析我的应用程序,我收到此报告。它表明有太多的释放,但我不知道哪一个是罪魁祸首。
有谁知道如何解释这份报告?
这条线是否正常?
84 0x10291ff0 Release 3 MyApp __destroy_helper_block_
如果需要进一步的信息,请告诉我。我感谢你的帮助。
# Address Event Type RefCt Responsible Library Responsible Caller
0 0x10291ff0 Malloc 1 UIKit -[UIClassSwapper initWithCoder:]
1 0x10291ff0 Retain 2 UIKit UINibDecoderDecodeObjectForValue
2 0x10291ff0 Retain 3 UIKit -[UIRuntimeConnection initWithCoder:]
3 0x10291ff0 Retain 4 UIKit -[UIRuntimeConnection initWithCoder:]
4 0x10291ff0 Retain 5 UIKit UINibDecoderDecodeObjectForValue
5 0x10291ff0 Retain 6 UIKit UINibDecoderDecodeObjectForValue
6 0x10291ff0 Retain 7 UIKit -[UIStoryboardScene setSceneViewController:]
7 0x10291ff0 Retain 8 UIKit -[UINib instantiateWithOwner:options:]
8 0x10291ff0 Release 7 UIKit -[UINibDecoder finishDecoding]
9 0x10291ff0 Release 6 UIKit -[UIRuntimeConnection dealloc]
10 0x10291ff0 Release 5 UIKit -[UIRuntimeConnection dealloc]
11 0x10291ff0 Release 4 UIKit -[UINibDecoder finishDecoding]
12 0x10291ff0 Release 3 UIKit -[UINibDecoder finishDecoding]
13 0x10291ff0 Release 2 UIKit -[UINibDecoder finishDecoding]
14 0x10291ff0 Retain 3 UIKit -[UIStoryboardSegue initWithIdentifier:source:destination:]
15 0x10291ff0 Retain 4 UIKit -[UIViewController setChildModalViewController:]
16 0x10291ff0 Retain 5 UIKit -[UIApplication _addViewControllerForLockingStatusBarTintColor:]
17 0x10291ff0 Retain 6 UIKit -[UINib instantiateWithOwner:options:]
18 0x10291ff0 Retain 7 UIKit +[UIProxyObject addMappingFromIdentifier:toObject:forCoder:]
19 0x10291ff0 Retain 8 UIKit -[UINib instantiateWithOwner:options:]
20 0x10291ff0 Retain 9 UIKit +[UIProxyObject addMappingFromIdentifier:toObject:forCoder:]
21 0x10291ff0 Retain 10 UIKit -[UIProxyObject initWithCoder:]
22 0x10291ff0 Retain 11 UIKit -[UIRuntimeConnection initWithCoder:]
23 0x10291ff0 Retain 12 UIKit -[UIRuntimeConnection initWithCoder:]
24 0x10291ff0 Retain 13 UIKit -[UIRuntimeConnection initWithCoder:]
25 0x10291ff0 Retain 14 UIKit -[UIRuntimeConnection initWithCoder:]
26 0x10291ff0 Retain 15 UIKit -[UIRuntimeConnection initWithCoder:]
27 0x10291ff0 Retain 16 UIKit -[UIRuntimeConnection initWithCoder:]
28 0x10291ff0 Retain 17 UIKit -[UIRuntimeConnection initWithCoder:]
29 0x10291ff0 Retain 18 UIKit -[UIRuntimeConnection initWithCoder:]
30 0x10291ff0 Retain 19 UIKit -[UIRuntimeConnection initWithCoder:]
31 0x10291ff0 Retain 20 UIKit -[UIRuntimeConnection initWithCoder:]
32 0x10291ff0 Retain 21 UIKit -[UIRuntimeConnection initWithCoder:]
33 0x10291ff0 Retain 22 UIKit -[UIRuntimeConnection initWithCoder:]
34 0x10291ff0 Retain 23 UIKit -[UIRuntimeConnection initWithCoder:]
35 0x10291ff0 Retain 24 UIKit -[UIRuntimeConnection initWithCoder:]
36 0x10291ff0 Retain 25 UIKit -[UIRuntimeConnection initWithCoder:]
37 0x10291ff0 Retain 26 UIKit -[UIRuntimeConnection initWithCoder:]
38 0x10291ff0 Retain 27 UIKit -[UIProxyObject initWithCoder:]
39 0x10291ff0 Retain 28 UIKit -[UIRuntimeConnection initWithCoder:]
40 0x10291ff0 Retain 29 UIKit -[UIRuntimeConnection initWithCoder:]
41 0x10291ff0 Retain 30 UIKit UINibDecoderDecodeObjectForValue
42 0x10291ff0 Retain 31 UIKit UINibDecoderDecodeObjectForValue
43 0x10291ff0 Retain 32 UIKit UINibDecoderDecodeObjectForValue
44 0x10291ff0 Retain 33 UIKit UINibDecoderDecodeObjectForValue
45 0x10291ff0 Release 32 UIKit -[UINib instantiateWithOwner:options:]
46 0x10291ff0 Release 31 UIKit +[UIProxyObject removeMappingsForCoder:]
47 0x10291ff0 Release 30 UIKit +[UIProxyObject removeMappingsForCoder:]
48 0x10291ff0 Release 29 UIKit -[UINibDecoder finishDecoding]
49 0x10291ff0 Release 28 UIKit -[UINibDecoder finishDecoding]
50 0x10291ff0 Release 27 UIKit -[UINibDecoder finishDecoding]
51 0x10291ff0 Release 26 UIKit -[UINibDecoder finishDecoding]
52 0x10291ff0 Release 25 UIKit -[UINibDecoder finishDecoding]
53 0x10291ff0 Release 24 UIKit -[UINibDecoder finishDecoding]
54 0x10291ff0 Release 23 UIKit -[UIRuntimeConnection dealloc]
55 0x10291ff0 Release 22 UIKit -[UIRuntimeConnection dealloc]
56 0x10291ff0 Release 21 UIKit -[UIRuntimeConnection dealloc]
57 0x10291ff0 Release 20 UIKit -[UIRuntimeConnection dealloc]
58 0x10291ff0 Release 19 UIKit -[UIRuntimeConnection dealloc]
59 0x10291ff0 Release 18 UIKit -[UIRuntimeConnection dealloc]
60 0x10291ff0 Release 17 UIKit -[UIRuntimeConnection dealloc]
61 0x10291ff0 Release 16 UIKit -[UIRuntimeConnection dealloc]
62 0x10291ff0 Release 15 UIKit -[UIRuntimeConnection dealloc]
63 0x10291ff0 Release 14 UIKit -[UIRuntimeConnection dealloc]
64 0x10291ff0 Release 13 UIKit -[UIRuntimeConnection dealloc]
65 0x10291ff0 Release 12 UIKit -[UIRuntimeConnection dealloc]
66 0x10291ff0 Release 11 UIKit -[UIRuntimeConnection dealloc]
67 0x10291ff0 Release 10 UIKit -[UIRuntimeConnection dealloc]
68 0x10291ff0 Release 9 UIKit -[UIRuntimeConnection dealloc]
69 0x10291ff0 Release 8 UIKit -[UIRuntimeConnection dealloc]
70 0x10291ff0 Release 7 UIKit -[UIRuntimeConnection dealloc]
71 0x10291ff0 Release 6 UIKit -[UIRuntimeConnection dealloc]
72 0x10291ff0 Release 5 Foundation -[NSAutoreleasePool drain]
73 0x10291ff0 Retain 6 MyApp -[SSPullToRefreshView initWithScrollView:delegate:]
74 0x10291ff0 Release 5 MyApp -[SSPullToRefreshView initWithScrollView:delegate:]
75 0x10291ff0 Retain 6 UIKit -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:isRotating:]
76 0x10291ff0 Retain 7 libsystem_sim_blocks.dylib _Block_object_assign
77 0x10291ff0 Retain 8 libsystem_sim_blocks.dylib _Block_object_assign
78 0x10291ff0 Release 7 Foundation __NSFireDelayedPerform
79 0x10291ff0 Release 6 UIKit -[UIStoryboardSegue dealloc]
80 0x10291ff0 Release 5 Foundation __NSFireDelayedPerform
81 0x10291ff0 Release 4 UIKit -[UIStoryboardScene dealloc]
82 0x10291ff0 Retain 5 UIKit __91-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:]_block_invoke_0238
83 0x10291ff0 Release 4 UIKit __destroy_helper_block_250
84 0x10291ff0 Release 3 MyApp __destroy_helper_block_
85 0x10291ff0 Release 2 UIKit -[UIWindowController transitionViewDidComplete:fromView:toView:removeFromView:]
86 0x10291ff0 Retain 3 UIKit -[UIViewController _dismissViewControllerWithTransition:from:completion:]
87 0x10291ff0 Retain 4 UIKit __91-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:]_block_invoke_0238
88 0x10291ff0 Retain 5 UIKit -[UIViewController _didFinishDismissTransition]
89 0x10291ff0 Retain 6 UIKit -[UIApplication _removeViewControllerForLockingStatusBarTintColor:]
90 0x10291ff0 Release 5 UIKit -[UIApplication _removeViewControllerForLockingStatusBarTintColor:]
91 0x10291ff0 Release 4 UIKit -[UIApplication _removeViewControllerForLockingStatusBarTintColor:]
92 0x10291ff0 Release 3 UIKit -[UIViewController setChildModalViewController:]
93 0x10291ff0 Release 2 UIKit -[UIViewController _didFinishDismissTransition]
94 0x10291ff0 Release 1 UIKit -[UIWindowController transitionViewDidComplete:fromView:toView:removeFromView:]
95 0x10291ff0 Release 0 UIKit -[UIViewController _dismissViewControllerWithTransition:from:completion:]
96 0x10291ff0 Zombie -1 UIKit -[UIScrollView(UIScrollViewInternal) _delegateScrollViewAnimationEnded]
- 编辑 -
以下是我如何使用AFNetworking在我的应用的每个页面上检索数据:
[[APIClient sharedClient] getPath:request
parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
[SVProgressHUD dismiss];
[self.pullToRefreshView finishLoading];
... read data ...
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[SVProgressHUD showErrorWithStatus:error.localizedDescription];
}];
没有will / didUnload方法,只有这一个:
- (void)viewWillDisappear:(BOOL)animated{
[SVProgressHUD dismiss];
[_pubnub unsubscribeFromChannel: self.pro.channel];
}
答案 0 :(得分:0)
我认为这是因为AFNetworking委托方法。 您可能会使用AFNetworking委托方法从后端获取内容。 释放CustomViewController时,您可以清除它的委托。 因此,请将以下代码snap添加到CustomViewContoller的dealloc方法。
- (void)dealloc
{
...
networkingInstance.delegate = nil;
[super dealloc];
}