Одновременное выполнение нескольких NSThreads приводит к зависанию приложения - PullRequest
0 голосов
/ 02 марта 2012

Я занимаюсь разработкой приложения, в котором у меня отображается много изображений в виде таблицы. Эти изображения должны быть получены с сервера, поэтому я создал другой поток, в котором изображение обрабатывается, а затем устанавливается в ячейку таблицычтобы наш табличный вид плавно и правильно прокручивался.Моя проблема заключается в том, что когда я несколько раз прокручиваю свое представление таблицы, приложение зависает, и через некоторое время xcode показывает сообщение, показанное на изображении ниже:мой код, который может быть связан с этой ошибкой. Пожалуйста, кто-нибудь подскажет мне, как решить эту проблему.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

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

1 голос
/ 02 марта 2012

Итак, я думаю, что у вас заканчивается порт Маха . Мне кажется, что вы запускаете поток для каждой отдельной ячейки в своей таблице, а затем все они пытаются запланировать выполнение задач в главном цикле выполнения после их завершения. Это приведет к стрессу вашей системы.

Я бы создал NSOperation для каждого изображения и запланировал их все в одном NSOperationQueue. Среда выполнения будет использовать пул потоков, настроенных на конкретную систему, для выполнения всех операций.

Для такой простой вещи, как это, вы также можете использовать GCD, как говорит Оскар, но я недавно прочитал в списке Apple, что NSOperationQueue предпочтительнее, потому что это более высокий уровень. Это дает вам больше возможностей для контроля того, что происходит с вашими фоновыми задачами.

...