В приложении iPad у меня есть куча UIImageViews внутри большего UIView. Каждый UIImageView содержит миниатюру, которая создается в отдельном потоке (чтобы не замораживать приложение). После того, как эскиз был успешно сгенерирован, я вызываю setNeedsDisplay
в основном потоке, однако он не обновляет UIImageViews по мере того, как большие пальцы становятся доступными (я вижу их в журнале), а занимает около 5 секунд, а затем отображает их все в один раз.UIView занимает слишком много времени, чтобы обновить
вот что я делаю, когда эскиз был создан в отдельном потоке:
[self performSelectorOnMainThread:@selector(setNeedsDisplay)
withObject:nil
waitUntilDone:NO];
какие-нибудь идеи?
no, мой основной поток позволяет пользователю взаимодействовать с представлениями (перетаскивать их, упорядочивать и т. Д.). Так что он не останавливается. Именно по этой причине я использую отдельный поток для загрузки эскизов, чтобы пользовательский интерфейс не выглядел отрывистым. Я использую NSOperationQueue для потоковой обработки, и мои журналы показывают, что потоки примерно занимают около 200 мс, чтобы закончить работу. но эскизы появляются только через 5 секунд. –
Я знаю, что вы сказали, что вы вызываете 'setNeedsDisplay' в свой основной поток, но вы вообще взаимодействуете с UIKit * * из фонового потока? – Jim
нет, нет. Я просто читаю исходные изображения, изменяя их размер и устанавливая их на UIIImageView, о, подождите, я не могу установить их в UIImageView, могу ли я? упс. это была глупая ошибка. я смущен. спасибо Джим. проблема исправлена. –