2011-12-20 3 views
-1

Я вычисляю общее количество файлов по определенному пути и показывая этот результат в custom cell. Я использую NSThread для вычисления количества файлов в - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView*)controlView (внутри пакета). когда я вычисляю количество файлов, показывая пустую ячейку. я думаю, что его вызов [super drawWithFrame:newFrame inView:controlView]; до NSThread возвращает результат.
Может ли кто-нибудь помочь мне? Спасибо :)NSTask в NSBundle

ответ

1

Сама причина использования нити для этого - не блокировать пользовательский интерфейс на основном потоке. Причина, по которой работает, заключается в том, что начинается поток, а затем метод создания потоков немедленно возвращает, поэтому основной поток может работать с другим бизнесом.

Так что да, вы добираетесь до [super drawWithFrame:inView:], прежде чем поток закончится. Вы не должны дождаться окончания потока - это приведет к поражению цели использования потока.

Вы все равно не должны делать все это из ячейки. Вы должны делать это из источника данных таблицы. Удалите свои потоки (или, возможно, лучше, операции) вскоре после того, как у вас есть список каталогов, и обновите ячейки по мере поступления результатов.