Нужно ли запускать делегат UIScrollView в другом потоке, чтобы предотвратить проблемы с производительностью при прокрутке? - PullRequest
1 голос
/ 09 мая 2009

Я собираюсь сделать некоторые сложные вещи в методах делегата во время прокрутки. Я также реализую динамическую предварительную загрузку содержимого, чтобы теоретически можно было прокрутить несколько сотен тысяч изображений. Но я боюсь, что каждый раз, когда я выполняю действие предварительной загрузки для следующего большого чанка в направлении прокрутки, делегат будет ждать, пока источник данных не доставит данные, и весь вид прокрутки будет заморожен в этот момент.

Проблема в том, что мне всегда нужен доступ к подпредставлениям прокрутки. Я новичок в платформе, и я не знаю, будет ли у меня доступ, когда я открою другой поток для этих действий предварительной загрузки? Или же прокрутка не будет ждать, пока делегат выполнит свою работу?

Я в фазе глиссирования, поэтому не слишком много реактивного.

Ответы [ 2 ]

3 голосов
/ 09 мая 2009

Вы можете использовать только классы пользовательского интерфейса из основного потока. Итак, что вы должны сделать, это как можно больше вычислить в фоновом потоке (я полагаю, что вы также можете загрузить свои изображения в фоновом потоке), а затем использовать performSelectorOnMainThread:withObject:waitUntilDone: для управления классами пользовательского интерфейса в основном потоке.

См. Как обновить пользовательский интерфейс в середине этой темы? для другого экземпляра вашего вопроса

1 голос
/ 09 мая 2009

У меня нет конкретного ответа на ваш конкретный вопрос. Я просто хочу убедиться, что вы знаете о пределе оперативной памяти ~ 25 МБ для вашего приложения. Я не могу дать ссылки на это, потому что, хотя Apple знает предел, они не говорят.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...