在我的ParentViewController中,我输入:
- (void)updateView:(NSInteger)_index article:(AObject *)aObject {
UIView *aUIView = [someUIViews objectAtIndex:_index];
// clear view
for (UIView *view in aUIView.subviews) {
[view removeFromSuperview];
}
// create view
ChildViewController *cvc = [[ChildViewController alloc] init:aObject context:managedObjectContext];
cvc.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[self addChildViewController:cvc];
[aUIView addSubview:cvc.view];
cvc = nil;
}
在ChildViewController中我输入:
.h文件
@interface ChildViewController : UIViewController <UIWebViewDelegate> {
AObject *aObject;
UIWebView *webView;
}
.m文件
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:(BOOL)animated];
webView.delegate = nil;
webView = nil;
aObject = nil;
}
注:
计划目标:
截图:
http://postimage.org/image/mzmksm9d5/
我不能直接发布图片,因为这里的声誉很低。
根据图,大约第4秒调用 ParentViewController 。然后内存在没有释放对象的情况下迅速增加。大约在第30秒,单击导航栏上的后退按钮, ParentViewController 就消失了。记忆力下降了一些,但仍有一些事情在继续。
目标:
我希望做的是,当调用 viewWillDisappear 并且不再使用它时,可以销毁 ChildViewController 的对象。所以我希望在增加一点后内存总是会下降。否则,内存将与滚动时间成比例增加并崩溃,直到内存完全使用。
提前感谢您提供的任何帮助。
答案 0 :(得分:0)
不确定这是否可以解决问题,但请尝试从父视图中明确删除cvc.view。
此外,您正在创建ChildViewController,但您没有发布它。通过调用init,您可以增加其保留计数,但不会在任何地方减少它。像这样(如果你没有更多的代码),你的ChildViewController将不会被释放,因为保留计数永远不会再为0。
ChildViewController *cvc = [[ChildViewController alloc] init:aObject context:managedObjectContext];
cvc.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[self addChildViewController:cvc];
[aUIView addSubview:cvc.view];
cvc = nil;