Лучший многопоточный подход в Objective C?

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

Это то, что я уже пробовал :
[self PerformSelectorInBackground :@selector (displayThumbnails :)withObject :currentFolder];
Это работало нормально, потому что взаимодействие пользователей не блокировалось, однако это с треском терпит неудачу, когда пользователь нажимает на другую папку, пока первая папка все еще загружается. Два потока пытаются получить доступ к одному и тому же представлению и переменным, что приводит к нарушению правильного выполнения друг друга. Когда пользователи нажимают на другую папку, displayThumbnailsтекущей загружаемой папки должно быть прервано. Я не нашел способа сделать это..

NSThreads
Я попробовал это, но столкнулся почти с теми же проблемами, что и с первым методом, я не нашел (простого )способа отменить текущий метод. (Да, я знаю о [aThread cancel], но не нашел способа "возобновить" обсуждение ). Может быть, мне следует создать подкласс NSThreadи реализовать свои собственные методы isRunning и т. д.? Но нет ли лучшего способа или третьего (или даже четвертого и пятого )вариантов, которые я упускаю из виду?

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

6
задан s1m0n 15 July 2012 в 22:10
поделиться