NSFileManager fileExistsAtPath: сбой с SIGABRT на iOS4.1, почему? - PullRequest
0 голосов
/ 25 октября 2010

Вот код, который я использую:

NSFileManager* defaultMgr = [NSFileManager defaultManager];
if (![defaultMgr fileExistsAtPath:path]) {
 return nil;
}

Где путь - это URL-адрес файла в системе, например: "file: // localhost / private / var / mobile / Applications / blahblahblah"

Это происходит сбой с SIGABRT, когда выполняется вызов fileExistsAtPath :. Файл существует, и, возможно, формат строки не тот, который предпочитает этот метод, но он должен просто возвращать NO. Этот код является частью очень популярной библиотеки, и хотя мне не нужно строго проверять наличие пути, я действительно хочу понять, что здесь происходит, на случай, если мне когда-нибудь понадобится использовать этот метод напрямую.

В частности:

  1. Правильно ли автор библиотеки использует этот метод?
  2. Как можно поймать или ожидать исключения из этого метода?
    (Документы SDK не обсуждают, какие исключения могут быть вызваны этим методом.)
  3. Это ошибка, о которой я должен сообщить в Apple?

Еще одна деталь: я запускаю это на своем устройстве iPhone 4 с iOS 4.1

1 Ответ

0 голосов
/ 25 октября 2010

На ум приходит несколько вопросов:

1) NSFileManager работает с путями, а не с URL. Нет необходимости в "file: //".

2) Для этого нужны строки NSS типа @ "...".

3) Вы должны попытаться сохранить свои пути к файлам в изолированной программной среде вашего приложения.

...