Есть ли разница между CFURLEnumerator и NSDirectoryEnumerator для отображения содержимого каталога? - PullRequest
1 голос
/ 02 апреля 2012

Я работаю над проектом, в котором мне нужно рекурсивно перебирать подкаталоги данной папки и, по существу, выбирать пути всех дочерних элементов в этой папке. И CFURLEnumerator, и NSDirectoryEnumerator делают это, но я не могу решить, какой из них использовать. Есть ли разница в скорости между двумя?

Буду признателен, если у кого-то есть опыт с этим.

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

Я думаю, что любая разница в скорости будет подавлена ​​тем фактом, что вам придется считывать структуру каталогов с диска. Я бы всегда использовал NS-версию, потому что с Какао работать немного проще, чем с Core Foundation.

1 голос
/ 20 мая 2016

NSDirectoryEnumerator использует CFURLEnumerator, поэтому вы увидите очень небольшую разницу в производительности.

CFURLEnumerator предоставляет несколько опций перечислителя - kCFURLEnumeratorIncludeDirectoriesPreOrder и kCFURLEnumeratorIncludeDirectoriesPostOrder - которые не предоставляются API-интерфейсом Какао. Эти параметры полезны, если вам нужно контролировать, когда каталоги возвращаются во время рекурсивных перечислений. Например, если вы хотите использовать CFURLEnumerator для перечисления и удаления содержимого иерархии каталогов, вам необходимо удалить каталоги после того, как вы удалите потомков каталогов. Опция kCFURLEnumeratorIncludeDirectoriesPostOrder позволяет вам увидеть URL каталога после того, как вы увидели все его потомки.

...