Могу ли я по-прежнему использовать UIAccelerometerDelegate при отправке новых приложений? - PullRequest
0 голосов
/ 18 января 2012

Я понимаю, что UIAccelerometerDelegate устарела с ios5.

Мне все еще нужно отправить приложение, чтобы люди с ios3.2 (первая версия iPad) все еще могли его использовать. Приложение предназначено только для iPad, но я заметил, что основная библиотека движений предназначена для ios4 и выше ... Означает ли это, что я не могу отправить с устаревшей UIAccelerometerDelegate? Перестанет ли работать UIAccelerometerDelegate в более новой iOS?

Могу ли я использовать оба варианта, чтобы у людей с ios3.2 было ускорение, и как бы я это реализовал?

Спасибо всем, кто может мне помочь!

1 Ответ

0 голосов
/ 18 января 2012

Возможно, что в какой-то момент он перестанет работать, но Apple не отклоняет приложения только из-за устаревших API.

Вы можете выбрать, какой API использовать во время выполнения, хотя это немного сложнее, чем обычно, потому что CoreMotion использует блоки, которые являются новыми для iOS 4. Поскольку блоки являются объектными литералами (то есть их создание происходит естественным образом как часть программы потоком, а не явно по вашей команде) вам нужно сообщить, что вы не возражаете, если они не существуют, для компоновщика, для чего вы можете добавить -weak-lSystem в вашу командную строку.

После этого вы можете использовать стандартный переключатель времени выполнения, например:

if(NSClassFromString(@"CMMotionManager"))
{
    // this device has an implementation of CMMotionManager,
    // so proceed with CoreMotion
}
else
{
    // this device doesn't have an implementation of
    // CMMotionManager, so proceed with UIAccelerometerDelegate
}

NSClassFromString просит среду выполнения вернуть Class для указанного класса. Он возвращает либо это, либо nil, если указанный класс не существует во время выполнения. Поэтому его можно использовать, чтобы увидеть, реализованы ли конкретные классы, гораздо лучшее решение, чем полагаться на кодирование вне знаний о номерах версий библиотеки и т. Д.

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