Вызов CFURLCreateFromFileSystemRepresentation иногда не удается

У меня есть приложение, которое загружается в пакет, и при этом я вызываю CFURLCreateFromFileSystemRepresentation перед CFBundleCreate: -

bundlePackageURL = CFURLCreateFromFileSystemRepresentation(
           kCFAllocatorDefault,
           (const UInt8*)bundlePackageFileSystemRepresentation,
           strlen(bundlePackageFileSystemRepresentation),
           true );

В большинстве случаев, при запуске того же приложения и загрузке того же пакета, который находится в каталоге ресурсов пакета приложения, функция работает и возвращает действительный CFURL. Однако с точно такими же параметрами, переданными в функцию, вызов иногда завершается неудачно.

Теперь у меня есть код для обработки ошибки:

    CFURLRef bundlePackageURL = NULL;
    int attempt = 0;        
    while((bundlePackageURL == NULL) && (attempt++ < 12000))
    {
        bundlePackageURL = CFURLCreateFromFileSystemRepresentation(
           kCFAllocatorDefault,
           (const UInt8*)bundlePackageFileSystemRepresentation,
           strlen(bundlePackageFileSystemRepresentation),
           true );

        // failed to load, so try again
        if(bundlePackageURL == NULL)
            fprintf(stdout, "Retrying to obtain CFURL: %d...\n", attempt);
    }

Как вы можете видеть, это делает до 12000 попыток вызова функции, и когда она терпит неудачу, я видел, что для успешного выполнения требуется от нескольких сотен до более чем 10000 повторных вызовов.

Кто-нибудь может объяснить, почему эта функция иногда дает сбой и это нормально?

0 ответов

Другие вопросы по тегам