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