2009-08-14 5 views
1

Я разрабатываю приложение в cocoa.I нужно искать все песни в папке selectyed. Я использовал «subpathsAtPath», чтобы получить все компоненты в выбранной папке. Это прекрасно работает, если пользователь выбирает конкретную папку, например /User/Music. Но если пользователь выбирает корневой каталог, например «/», этот метод зависает. Есть ли способ решить эту проблему. Заранее спасибо .....Найти все папки в корневом каталоге

+0

Неужели он висит или занимает очень много времени? – kent

ответ

2

Как сказал kent, маловероятно, что этот метод зависает, это займет много времени, чтобы выполнить и блокирует дальнейшее выполнение в потоке, пока оно не вернется.

Рассмотрите возможность использования enumeratorAtPath:. Он использует NSDirectoryEnumerator и предоставляет вам один каталог за раз. Это устранит необходимость создания очень большого массива, который дорогостоящий по памяти. Я также упрощаю разбивку вашей работы на куски (NSOperations?), Чтобы вы могли оттолкнуть ее в другой поток, что, вероятно, было бы хорошей идеей, учитывая количество времени, которое потребуется для завершения. NSDirectoryEnumerator также дает вам некоторый контроль над перечислением, т. Е. Вы можете вызвать -skipDescendents [sic], чтобы обрезать дерево перечислений.

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