как использовать CFURLCreateFromFileSystemRepresentation - PullRequest
2 голосов
/ 02 марта 2011

Я изучаю основной звук на iPhone. Я использую API более высокого уровня, поэтому многие вещи, связанные с основным звуком, являются для меня новыми. Чтобы получить ссылку на файл, я обычно использую [[NSBundle mainBunle] pathForResource:]; затем создайте NSURL из строки, которая перенастроена.

но с основным звуком мне нужно использовать-

CFURLRef CFURLCreateFromFileSystemRepresentation (
   CFAllocatorRef allocator,
   const UInt8 *buffer,
   CFIndex bufLen,
   Boolean isDirectory
);

Параметры распределитель Распределитель, используемый для выделения памяти для нового объекта CFURL. Передайте NULL или kCFAllocatorDefault, чтобы использовать текущий распределитель по умолчанию.

буфер Символьные байты для преобразования в объект CFURL. Это должен быть путь, который вы использовали бы в вызовах функций POSIX.

bufLen Количество байтов в буфере.

isDirectory Логическое значение, которое указывает, обрабатывается ли строка как путь к каталогу при сопоставлении с компонентами относительного пути - true, если имя пути указывает на каталог, в противном случае - false.

Что бы я передал в качестве второго аргумента этой функции. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

NSURL является бесплатной связью с CFURLRef.Это означает, что вы можете просто привести NSURL к CFURLRef, например так:

CFURLRef url = (CFURLRef)[[NSBundle mainBunle] URLForResource:...];

Если вы действительно хотите использовать CFURLCreateFromFileSystemRepresentation, вторым параметром является массив символов, очень похожий на "char * в стиле C""строка.

0 голосов
/ 05 марта 2013

Попробуйте эту магию:

NSString* path = @"/var/mobile/Applications/B1C8276B-D5ED-4D1E-BB2C-07D2AB7381B3/TCCTest.app";
CFURLRef url = CFURLCreateFromFileSystemRepresentation(0,
                               (char*)path.cString, path.length, false);

CFBundleRef bun =  CFBundleCreate(kCFAllocatorDefault, url);
...