Обновление приложения по-прежнему указывает на старые удаленные перья.Как решить эту проблему без переустановки приложения? - PullRequest
5 голосов
/ 03 марта 2012

У нас есть приложение, которое уже есть в магазине приложений.

Теперь мы планируем уменьшить размер приложения путем программного создания всех представлений и удаления соответствующих файлов NIB (XIB).

Проблема в том, что даже когда перо удалено и не вызвано, обновленная версия приложения по-прежнему указывает на старое перо, и возникает проблема, подобная этой (это изображение является лишь примером, проблема постоянна во всем приложение):

enter image description here

По сути, представления создаются как IB, так и кодом.

Единственное решение, которое мы нашли, - это удалить и переустановить приложение, но просить всех пользователей сделать это нежелательно. Кроме того, это также приведет к удалению локально сохраненных данных приложения, что является главной проблемой, которую мы пытаемся здесь избежать.


В приведенном выше примере для загрузки ViewController использовался следующий код:

Ранее (когда представление было построено с использованием пера):

    TheNewVC *theNewVC = [[TheNewVC alloc] initWithNibName:@"TheNewVC" bundle:nil];
    [self presentModalViewController:theNewVC animated:YES];

Теперь (когда представление построено программно, что приводит к вышеуказанной проблеме):

    TheNewVC *theNewVC = [[TheNewVC alloc] initWithNibName:nil bundle:nil];

    UINavigationController *addNavCon = [[UINavigationController alloc] initWithRootViewController:theNewVC];
    [self presentModalViewController:addNavCon animated:YES];

JFYI, даже если TheNewVC *theNewVC = [[TheNewVC alloc] initWithNibName:nil bundle:nil]; заменено на TheNewVC *theNewVC = [[TheNewVC alloc] init];, проблема остается такой же.


Какое может быть решение, которое не включает переустановку приложения. В любом случае, мы могли бы программно удалить кеш Nib, на который ссылается iOS? ИЛИ в худшем случае, попросить пользователей сделать это? Любая помощь будет высоко ценится.

1 Ответ

7 голосов
/ 03 марта 2012

Я предполагаю, что вы запускаете приложение из Xcode.Который не удаляет существующие ресурсы из вашего пакета приложений.Однако, когда вы устанавливаете через магазин приложений, я уверен , что он действительно очищает ваш пакет приложений и распаковывает новую версию поверх (так что старые ресурсы удаляются ..)

ЕслиВы хотите быть уверены, что ваш .xib не будет загружен, просто переименуйте класс ViewController, и он больше не будет загружать старый xib (так как он ищет файл под названием viewcontrollername.xib в комплекте приложений)

Чтобы сделать это, перейдите в .h для контроллера представления, щелкните правой кнопкой мыши на имени контроллера представления и выберите Refactor.

...