iOS Objective-C Имя файла изображения / путь различного поведения между симулятором и устройством - PullRequest
5 голосов
/ 15 декабря 2010

У меня есть приложение, в котором комплект приложений содержит файл изображения (я имею в виду, что файл перетаскивается в XCode и отображается в «Других источниках»), и я использую код, подобный:

[[NSBundle mainBundle] pathForResource:@"Auto" ofType:@"jpg"]

чтобы получить путь к изображению.

Я обнаружил, что при запуске на устройстве (iPod Touch) имя учитывает регистр, поэтому, если файл «Авто», а я использую «АВТО», возвращаемое выражение: «file: // (null) )». Однако на симуляторе, если я использую «АВТО», он работает так же, как если бы я использовал «Авто».

Я думаю, что тот факт, что симулятор имеет такое явное отличие в поведении от устройства, является ошибкой. Неужели более опытные пользователи считают, что это так, и что я должен сообщить об этом в Apple?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 16 декабря 2010

Файловая система iOS чувствительна к регистру, в то время как файловая система OSX, используемая симулятором, не такова.

Вы должны быть очень осторожны с этим, я застрелился в это большечем один раз.

1 голос
/ 16 декабря 2010

Это больше связано с самим NS / CFBundle, чем с базовой файловой системой:

Непосредственно из Руководство по программированию пакета: Шаблон поиска пакета :

Важно : интерфейсы пакета учитывают случай при поиске файлов ресурсов в каталоге пакета.Этот поиск с учетом регистра происходит даже в файловых системах (таких как HFS +), которые не учитывают регистр, когда речь идет об именах файлов.

Вы всегда должны всегда учитывать чувствительность к регистру.Что ж, возможно, лучший способ выразить это, так сказать, никогда не предполагать, что регистр нечувствителен при сохранении регистра (что такое HFS +).В не столь отдаленном будущем чувствительный к регистру HFS + может стать форматом по умолчанию для Mac OS X. (В целом, он будет предпочтительнее текущего сохраняющего регистр HFS +, но если бы Apple переключила его сейчас, было быСкорее всего, это будут сотни тысяч приложений, которые сломаются из-за того, что разработчики делали предположения, которых они не должны иметь. iPhone является ярким примером предпочтения чувствительной к регистру HFS +. Без устаревших программ iPhone всегда былс учетом регистра).

Вы редактируете свой код и имена ресурсов прямо сейчас, поэтому найдите время, чтобы убедиться, что они совпадают.

0 голосов
/ 16 декабря 2010

Я думаю, что тот факт, что симулятор имеет такое явное отличие в поведении от устройства, является ошибкой.

В общем, это не обязательно указывает на ошибку.

Думают ли более опытные пользователи, что это так, и что я должен сообщить об этом в Apple?

Да. Но ошибка не имеет ничего общего с устройством. В частности, ошибка заключается просто в том, что пути файлов симулятора не чувствительны к регистру. Если вы можете воспроизвести это в проекте «песочницы», сделайте это и отправьте его вместе с отчетом об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...