Как сделать приложение iOS 4.0 совместимым с iPhone OS 3.1.3?

Итак, я, возможно, совершил ошибку при обновлении своего приложения до iOS 4.0, удалив мою установку Xcode и установив только SDK 4.0 (я даже не могу найти SDK 3.1.3 в своих резервных копиях, да!). Теперь у меня есть приложение, которое было построено с базовым SDK 4.0, и в нем говорится, что в iTunes требуется 4.0, но единственное, что я добавил, это методы -applicationDidEnterBackgroundState и -applicationDidBecomeActive (в основном просто скопировал и вставил код данных сохранения / загрузки из -applicationWillTerminate и -viewDidLoad). Возможно ли, что я смогу перестроить приложение с целью развертывания ОС iPhone, установленной на 3.1.3 в настройках сборки, и Apple позволит мне существенно понизить версию моего приложения? Следует ли мне добавить те операторы #If_Define, которые проверяют 4.0, чтобы они условно разрешили эти методы 4.0?


person Robot-Scott    schedule 20.08.2010    source источник


Ответы (1)


Нет, вам не нужно использовать операторы #ifdef. Вы можете вызывать метод как угодно - вопрос в том, вызовет ли его экземпляр UIApplication :).

Кроме того, я полагаю, что ваши настройки развертывания решат проблему с iTunes. Итак, вы должны установить его на 3.1.3 (или 3.0, если специально не требуется, многие люди, которых я знаю, не обновляли между 3s, потому что были минимальные функции, и во многих случаях это был выпуск, по сути, анти-джейлбрейк).

Что касается кода, я решил эту проблему следующим образом:

- (void) applicationWillTerminate:(UIApplication *)application
{
  // Just pass it on to the new iOS4 delegate
  NSLog(@"Application will terminate");
  [self applicationDidEnterBackground:application];
}

А для переднего плана у меня просто есть метод "загрузчика", который вызывается как из application:didFinishLaunchingWithOptions:, так и из applicationWillEnterForeground:.

Хорошо работает с моим программным обеспечением на моем 3G с 3.0 (я отказываюсь обновляться после просмотра iOS4 в 3G!), А также с моим 3GS с iOS4.

person makdad    schedule 20.08.2010
comment
О, хорошо ... так что в основном, когда приложение запускается в 3.0, оно просто игнорирует любые вызовы -applicationDidEnterBackground ... да, я, кажется, помню, что это одно из преимуществ Objective-C - person Robot-Scott; 21.08.2010