2016-07-31 5 views
-1

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

Каковы будут последствия?

+0

Показать код, который вы используете. – Wain

+0

вы можете использовать Настройки> разработчик> Network Link Conditioner> Очень плохая сеть для тестирования в медленной сети. и на Mac тоже есть инструмент для этого с именем «Network Link Conditioner» – hariszaman

+0

Как матовый говорит в своем ответе, вы можете, конечно, написать свой код для обработки этого случая без сбоев. Протестируйте его самостоятельно (используя предложение @ hariszaman, если необходимо) для сбоев и отчета. Если он сбой, отредактируйте свой вопрос, чтобы показать нам свой код. –

ответ

0

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

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

+0

спасибо, что ответ. Я отправлю код. Но вот мой вопрос: мне нужно что-то сделать, чтобы отменить загрузку, или автоматически отменит ее, когда я уйду от контроллера. – knowledgeseeker

+0

И мой ответ - нет. Извините, если это не ясно. Вот почему вы получили 'invalidateAndCancel'. – matt

+0

Расшифрованный мой ответ. – matt

Смежные вопросы