Обновление приложения с IOS4 до IOS5 - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть приложение IOS5, которое использует следующую функцию

[self.presentingViewController dismissModalViewControllerAnimated:YES]; 

и прекрасно работает на IOS4, но внезапно я обнаружил, что эта функция не существует на IOS5, поэтому мне пришлось использовать эту другую эквивалентную

[self.parentViewController dismissModalViewControllerAnimated:YES]

Теперь у меня возникла следующая проблема: пользователи IOS4 не могут установить мое приложение из-за этой несуществующей функции в IOS4, и, что еще хуже, приложение доступно в Apple App Store, нотолько функционал пользователей IOS5.Еще одна связанная с нами проблема: приложение неожиданно перестало работать на iPad, оснащенных Wi-Fi, подключенные к сетям 3G работают нормально.

Есть ли что-то, что я пропустил, пытаясь скомпилировать эту новую версию приложения?

Спасибозаранее!

Ответы [ 4 ]

4 голосов
/ 05 декабря 2011

Вы можете проверить наличие свойства следующим образом:

if([self respondsToSelector:@selector(presentingViewController)])
    [self.presentingViewController dismissModalViewControllerAnimated:YES];
else
    [self.parentViewController dismissModalViewControllerAnimated:YES];
1 голос
/ 05 декабря 2011

Кодируйте его следующим образом:

if ([self respondsToSelector:@selector(parentViewController)])
    [self.parentViewController ...];
else
    [self.presentingViewController ...];

(Это не скомпилировано, не проверено и т. Д.)

Дело в том, что вы можете (и должны) проверить возможности, а затем действоватьсоответственно.В этом случае, если метод iOS5 доступен, используйте его.Если нет, используйте старую версию, которая также означает, что это устройство до iOS5.

0 голосов
/ 22 марта 2012

Я создал категорию, которая добавляет presentingViewController на iOS 4. (Она отключает себя на iOS 5.)

Работает без проблем;Просто включите 2 файла.

Пожалуйста, см. back-modal .

Надеюсь, это принесет вам столько же пользы, сколько и мне;Это делает ваш код более чистым!

0 голосов
/ 05 декабря 2011

Возможны два варианта:

  1. , компиляция вашего приложения с последней версией SDK, но также установка цели развертывания на самую старую версию, которую вы хотите поддерживать;это обеспечит правильное перечисление приложения в App Store;

  2. проверка перед использованием любого метода / функции, которые доступны только в более поздней версии;это гарантирует, что ваше приложение не будет аварийно завершено и может быть выполнено с помощью условной компиляции, например:

k

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000
if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)])
{
    UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication] eginBackgroundTaskWithExpirationHandler:^{}];

     // Perform work that should be allowed to continue in background

     [[UIApplication sharedApplication] endBackgroundTask:bgTask];
}
#endif

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

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