Является ли FSGetVolumeInfo рекомендуемой альтернативой устаревшему методу mountLocalVolumePaths NSWorkspace?

Мне нужно получить список смонтированных локальных томов в Mac OS X. Раньше у класса Cocoa NSWorkspace был _ 2_ метод получения массива точек монтирования для таких томов. Начиная с Lion, это устарело, и в документации нет намека на то, что нам следует использовать вместо него.

Единственный другой API, специфичный для Apple, который я нашел, который предоставляет эту информацию, - это _ 3_ function из CoreServices.framework. Это перечислит подключенные тома, если вы передадите kFSInvalidVolumeRefNum для параметра volume и 1..N для volumeIndex. Он возвращает имя тома (как HFSUniStr255) через выходной параметр volumeName и точку монтирования через выходной параметр rootDirectory как FSRef, который, в свою очередь, может быть преобразован в URL с использованием CFURLCreateFromFSRef().

Это кажется немного запутанным и излишне низким.

Существуют также функции уровня BSD, getfsstat() и getmntinfo(), которые генерируют массив из statfs структур. API кажется более разумным, чем версия Core Services.

Могу ли я использовать замену более высокого уровня?


person pmdj    schedule 01.06.2012    source источник
comment
Я бы не стал беспокоиться о замене mountLocalVolumePaths. Он существует с 10.0 и только недавно был объявлен устаревшим. Вероятно, это никуда не денется, по крайней мере, еще в паре основных выпусков ОС.   -  person Mark    schedule 01.06.2012


Ответы (1)


Существует гораздо более простая замена в гораздо более логичном месте, чем старые методы: mountedVolumeURLsIncludingResourceValuesForKeys:options: метод NSFileManager.

person Peter Hosey    schedule 01.06.2012