Работа с устаревшими символами и методами при сборке для нескольких версий iOS - PullRequest
1 голос
/ 10 декабря 2010

Я разработчик C ++, который переходит в мир iPhone, и я хотел бы получить помощь по поводу чего-либо.

Скажем, например, MPMoviePlayerController используется для публикации уведомления MPMoviePlayerContentPreloadDidFinishNotification вiOS 3.1 и более ранние версии.

Однако теперь это уведомление устарело.

Я хочу, чтобы мое приложение могло работать на каждом iPhone с iOS 3 и выше.

Если я занимаюсь разработкой с использованием базовой SDK 4.2, когда я устанавливаю свое приложение на iphone с iOS 3.2, что произойдет?Приходит ли приложение с sdk, связанным с ним (например, со статической ссылкой mfc)?

Если я правильно понимаю, например, на iPhone с iOS 3.2 это уведомление будет по-прежнему вызываться.(Если я вызываю функцию на более раннем SDK, предполагая, что она не является статически связанной, как я спрашивал выше).

Означает ли это, что если я сейчас пишу новое приложение, мне все равно придется позаботитьсяиз тех устаревших уведомлений?

Я не могу обдумать это и был бы признателен за любые объяснения.

Спасибо

1 Ответ

2 голосов
/ 10 декабря 2010

Если вы используете символ, который был включен в iOS 4.2 на устройстве под управлением 3.2, вы столкнетесь с падением.

Способ обойти это состоит в том, чтобы использовать новые символы условно в зависимости от того, или нетони доступны во время выполнения.

Например.

if (&NewNotificationSymbol != NULL)
{
    // awesome, it's not NULL, we can use it
}
else
{
    // not so awesome, we'll use the old, deprecated one
    // but at least we won't crash
}

Тот же подход может быть использован для классов, которые являются новыми в 4.x, при запуске также в 3.x:

if (NSClassFromString(@"MyAwesomeNewClass") != nil)
{
    // awesome, it's not NULL, we can use it
}
else
{
    // not so awesome, we'll use the old, deprecated one
    // but at least we won't crash
}

Как правило, вы должны всегда компилировать и ссылаться на последнюю версию iOS SDK, поставляемую с инструментами разработчика, а затем установить для настройки сборки цели развертывания самую старую версию iOS, которую вы хотите поддерживать.Затем используйте эти условные выражения для использования новых функций и постепенного восстановления без сбоев, если они недоступны.

...