在我的应用程序中,我有很大的内存问题 我需要时动态地添加带有viewController视图的UIScrollview 我在滚动时正确删除了viewController 在那个viewController中,我在IBOutlet中放置了一个UIWebiew并加载了webview 如
[m_objWebView loadRequest:[NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://stackoverflow.com/"]]];
并在viewControllers dealloc
中发布UIWebview- (void)dealloc {
m_objWebView.delegate=nil;
[m_objWebView stopLoading];
[m_objWebView release];
m_objWebView=nil;
[[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
[super dealloc];
}
但是在5/6分钟后,我的应用程序在内存警告后崩溃。
现在我更改了直接将uiwebview添加到uiscrollview的代码,并对三个webview进行了延迟加载。现在内存泄漏减少但它仍然存在。但是现在我还有另外一个问题,当用户快速刷卡时,加载网页内容会有任何延迟来解决这个问题吗?
帮助我提前谢谢
答案 0 :(得分:2)
从dealloc中的UIViewController视图中删除子视图是不必要的。视图属性及其所有子视图将在所有者(UIViewController)发布时自动释放。您需要做的就是释放您保留的所有属性。假设您已将m_objWebView声明为 @property(非原子,保留)IBOutlet UIWebView * m_objWebView,然后您只需要:
- (void)dealloc {
m_objWebView.delegate=nil;
[m_objWebView stopLoading];
[m_objWebView release], m_objWebView=nil;
[super dealloc];
}
所以,我建议你研究一下保留/释放viewController的时间和地点,你仍然可以在这里优化。至于加载网页内容的延迟 - 嗯,这是延迟加载的缺点:懒惰使你的内存消耗降到最低,但是,正如术语所暗示的那样,它并不快。