inifinite UIScrollView с предварительной загрузкой - PullRequest
0 голосов
/ 29 июня 2011

Я использую очень большой UIScrollView с веб-представлениями / подпредставлениями и т. Д., Поэтому мне нужно, чтобы он был динамическим и предварительно загруженным с 3-мя видами контейнера.Работает в симуляторе, но вылетает на устройстве с нехваткой памяти.Я добавляю и удаляю из 3 основных видов, используя рекурсивный метод

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 (myView, 0);Приложение по-прежнему падает после 10 или около того переворачивания страницы с предупреждениями памяти.Этот код в порядке или даже необходим?Должен ли я вместо этого использовать какой-нибудь viewcontroller.

Спасибо !!!

1 Ответ

1 голос
/ 05 июля 2011

Из того, что я знаю, и я надеюсь, что я прав в этом, когда вы вызываете subview. Dispose () это не сборщик мусора сразу, а позже после использования некоторых других приложений.Попробуйте установить для содержимого подпредставлений значение null, где это возможно, и затем вызвать Dispose ().Также рассмотрите возможность реализации метода DidReceiveMemoryWarning внутри ваших подпредставлений / основных представлений.Я использую аналогичное приложение, использующее до трех скролл-обзоров, каждое с четырьмя страницами, и оно работает без проблем.

...