0
即时通讯使用非常大的UIScrollView与webviews /子视图等,所以我需要它是动态的,并预装了3个容器视图。它可以在模拟器中工作,但会在内存不足的情况下在设备上崩溃。 我加入并使用递归方法inifinite UIScrollView与预加载
private void destroyChildren(UIView view, int level) {
if (view.Subviews.Length > 0) {
foreach (UIView subview in view.Subviews) {
destroyChildren(subview, level++); // recurse
subview.RemoveFromSuperview();
if (subview is UIWebView) {
(subview as UIWebView).ShouldStartLoad -= webHandler;
}
if (subview is scrollViewer) {
(subview as scrollViewer).clicked -= viewClicked;
}
subview.BackgroundColor = UIColor.Cyan; // release bgImage?
subview.Dispose();
}
}
else {
if (level> 0) { // dont dispose root view
view.Dispose();
}
}
和调用destroyChildren从3个主视图除去(MyView的,0); 该应用程序仍然崩溃后大约10页左右翻转与内存警告。这段代码好吗,甚至是必要的?我应该使用某种视图控制器来代替。
谢谢!
FOREACH不允许将子设置为NULL,也许是另一个功能。我敦促DidReceiveMemoryWarning,但是因为一切都已经处置完毕,所以它只是进入救生艇的时候。 –
FOREACH不允许将子项设置为NULL:必须通过子项并调用RemoveFromSuperview。 – Scarlaxx