【发布时间】:2014-05-14 19:45:48
【问题描述】:
我有一个简单的应用程序,它只是加载一个包含 UIWebView 的视图控制器。在运行它时,我注意到 XCode 报告的内存量从 vc 分配前的 2 MB 增加到创建后的 12.5Mb。 但是在删除 vc 之后,内存量并没有下降,实际上它甚至进一步上升到 13Mb。但是 XCode 的泄漏分析器没有报告任何问题。
视图控制器是在应用程序的主(也是唯一的)视图控制器中创建和销毁的:
- (void) viewDidAppear:(BOOL)animated
{
static BOOL presented = NO;
if (!presented)
{
PresentationViewController *vc = [[PresentationViewController alloc] initWithPresentationId:@"index.html"];
__weak typeof(vc) weakVc = vc;
[vc setExitBlock:^{
[[weakVc presentingViewController] dismissViewControllerAnimated:YES completion:nil];
}];
[self presentViewController:vc animated:YES completion:nil];
presented = YES;
}
}
视图控制器的 dealloc 被调用,所以它被销毁了,是的,Web 视图委托被取消了。
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self.webView stopLoading];
self.webView.delegate = nil;
}
为什么删除视图控制器时内存消耗没有下降?
【问题讨论】:
-
您可以尝试将您的 ui 对象定义为
weak而不是strong? -
你的意思是VC的UIWebView属性吗?
-
是的,也包括其他人。
-
如果 UIWebView 变弱,它将无法工作 - 它只是一个空白屏幕。 (而且它对内存使用也没有任何影响)