У меня есть приложение iOS, в котором хранится абсолютный путь к файлам в базе данных и в сгенерированных html-документах. Я недавно обновил свой iPhone до iOS 8, и теперь, когда я запускаю приложение, кажется, что приложение установлено в другой каталог, каждый раз компилируется. Например, при первом сборке/запуске [[NSBundle mainBundle] bundlePath] возвращает что-то другое в следующем построении/запуске. Что происходит? Это новая функция Apple?
Обновление: Создан отчет об ошибке
Пример кода:
Если я запустил следующую строку над несколькими строками/запусками, каждый раз получаю другой результат.
#define kOLD_PATH @"oldPath"
NSString* newPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSString* oldPath = [[NSUserDefaults standardUserDefaults] objectForKey:kOLD_PATH];
NSLog(@"New Path: %@", newPath);
NSLog(@"Old Path: %@", oldPath);
NSLog(@"Result: %@", [oldPath isEqualToString:newPath] ? @"Same" : @"Changed");
[[NSUserDefaults standardUserDefaults] setObject:newPath forKey:kOLD_PATH];
[[NSUserDefaults standardUserDefaults] synchronize];
Результат выглядит следующим образом: несколько экземпляров
New Path: /var/mobile/Containers/Data/Application/4FFCE2CB-580D-409A-90CB-EF2B8A1FB653/Library
Old Path: /var/mobile/Containers/Data/Application/B038B2DA-F85D-4E18-A5F1-8635834EC454/Library
Result: Changed
Полное раскрытие: В моем приложении пользователь импортирует веб-страницу (ePub) с ресурсами. Ресурсы хранятся на веб-странице. Веб-страница также обращается к ресурсам, входящим в комплект приложения. Чтобы достичь этого, когда я загружаю веб-страницу, базовый url устанавливается в каталог, в котором находится веб-страница, и ресурсы пакета доступны через абсолютные пути к файлам. Теперь, когда пути файлов изменяются при каждом обновлении, это прерывается. Я попытался создать символические ссылки на ресурсы пакета, но также не удалось выполнить последующие обновления.