Как вы можете использовать функции iPhone OS 3.0 в совместимом с 2.0 приложении?

Я хотел бы использовать некоторые функции iPhone OS 3.0 в своем приложении 2.0, когда он работает на устройстве 3.0. Я не хочу идти 3,0 полностью, потому что есть клиенты, которые не хотят обновляться.

Я немного экспериментировал со слабой связью MapKit.framework(-weak_framework MapKit). Я нашел это довольно громоздким, так как мне пришлось обмануть компилятор/компоновщик, чтобы использовать 2.0 SDK со всем кодом, кроме того, который использует MapKit.

Есть ли у кого-нибудь больше опыта с этим? Что вы делаете для компиляции/ссылки. Кто-нибудь уже отправил приложение в Apple, какие платформы слабых ссылок из других версий ОС?

Ответ 1

В Apple есть пример того, как это сделать, в частности, создание 2.x-совместимого приложения, которое использует MFMailComposeViewController....

http://developer.apple.com/iphone/library/samplecode/MailComposer/index.html

ответ включает компиляцию с 3.0 SDK, установив цель развертывания на 2.x, гарантируя, что фреймворки 3.0 помечены как "слабые" ссылки, а затем делают правильную работу, чтобы заставить ваш код работать, если вы находитесь на устройство, в котором нет новых фреймворков.

Ответ 2

Вы всегда можете ссылаться на фреймворки, которые не являются частью текущего SDK, используя функцию dlopen. Конечно, это не рекомендуется для фреймворков, которые не являются общедоступными (в этом случае не рекомендуется запрещать использование в магазине приложений). Однако, поскольку новые рамки в неизданных версиях ОС становятся общедоступными, это вариант. Просто проверьте номер версии и открывайте фреймворки как доступные. Полезно для отдельных функций, не так много, если вы сильно используете новые вещи.

Ответ 3

Это, вероятно, не тот ответ, который вы ищете, но метод, который я использую, состоит только в двух отдельных приложениях. Вместо того, чтобы обновлять существующие приложения с 3,0 обновлениями, я просто выпускаю это как новое приложение. Старые пользователи могут использовать приложение 2.0 столько, сколько захотят, и люди, которые хотят использовать функции 3.0, могут обновить.

Ответ 4

Великое руководство по слабым связям (обе библиотеки и рамки) здесь:

http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html#//apple_ref/doc/uid/20002378-107262

Хотя это немного устарело... с последним x-кодом процесс слабой связи всей структуры на самом деле проще:

  • Щелкните правой кнопкой мыши цель и выберите "Получить информацию"
  • Перейдите на вкладку "Общие".
  • В разделе связанных библиотек в нижней части страницы измените тип от требуемого до слабого для всех библиотек, которые вы хотите использовать для слабой ссылки.
  • Profit

Ответ 5

Я не думаю, что ты можешь. 3.0 и 2.x используют совершенно разные SDK, а также ссылаются на совершенно другой набор файлов и библиотек. Я не уверен, но я не думаю, что вы можете подключиться к SDK 3.0 и по-прежнему быть совместимы с 2.X.

(добавьте комментарий, если я ошибаюсь).