Я передаю const char * значение в функцию, которая открывает указанный аудиофайл методом AudioFileOpenURL .Поэтому мне нужно значение CFURLRef.Но я использую относительный путь, например sounds / click.wav , но в этом случае AudioFileOpenURL не удается открыть файл (ошибка файла не найдена).Поэтому мне нужно расширить относительный путь и передать полный путь в этот метод.Лучшее решение, которое я нашел, было: получить URL-адрес комплекта, получить URL-адрес папки ресурса, создать CFURL из CFString, который был создан из байтов ..... очень раздражает.
CFBundleRef bundle = CFBundleGetMainBundle();
CFURLRef bundleUrl = CFBundleCopyBundleURL(bundle);
CFURLRef resUrl = CFBundleCopyResourcesDirectoryURL(bundle);
CFStringRef cfsName = CFStringCreateWithBytes(kCFAllocatorDefault, (UInt8*)inFilePath, strlen(inFilePath), kCFStringEncodingASCII, 1);
CFMutableStringRef fileName = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, CFURLGetString(bundleUrl));
CFStringAppend(fileName, CFURLGetString(resUrl));
CFStringAppend(fileName, cfsName);
CFURLRef theURL = CFURLCreateWithString(kCFAllocatorDefault, fileName, 0);
CFRelease(fileName);
CFRelease(cfsName);
CFRelease(resUrl);
CFRelease(bundleUrl);
Есть ли более простой способ сделатьтак?Потому что на айфоне следующий код:
CFURLRef theURL = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (UInt8*)inFilePath, strlen(inFilePath), false);
работает как шарм.