Как при желании использовать функции iPhone OS 3.0 в приложении, совместимом с 2.0? - PullRequest
42 голосов
/ 12 июня 2009

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

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

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

Ответы [ 5 ]

36 голосов
/ 22 июня 2009

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

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

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

5 голосов
/ 12 июня 2009

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

1 голос
/ 12 июня 2009

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

0 голосов
/ 26 августа 2010

Отличное руководство по слабым ссылкам (как для библиотек, так и для фреймворков) здесь:

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

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

  1. Щелкните правой кнопкой мыши цель и выберите Получить информацию
  2. Перейти на вкладку «Общие»
  3. В разделе связанных библиотек внизу измените Тип с обязательного на слабый для всех библиотек, для которых вы хотите использовать слабое звено.
  4. Прибыль
0 голосов
/ 12 июня 2009

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

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

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