Создайте проект xCode для xCode 3.2.5 и xCode 4.3.2 с классом NSUbiquitousKeyValueStore

У меня есть проект iPhone на xCode 4.3.2, и он работает хорошо. Он использует класс NSUbiquitousKeyValueStore, а его базовый SDK - iOS 5.0. Теперь я собираюсь построить свой проект на xCode 3.2.5, и он говорит об ошибке "Неопределенный символ NSUbiquitousKeyValueStore". Конечно, я знаю, что класс NSUbiquitousKeyValueStore поддерживается в iOS 5.0, а xCode 3.2.5 не поддерживает iOS 5.0. Поэтому я хочу отключить эти функции старше iOS 5.0 и включить поверх iOS 5.0. Как я могу это сделать?

2 ответа

Решение

Окружите код, который использует функции, представленные в 5.0 SDK, примерно так:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000
    // Code using NSUbiquitousKeyValueStore goes here
#endif

Обратите внимание, что это условная компиляция. Тест выполняется при сборке, а не при запуске. Итак, если вы соберете более старую версию Xcode без 5.0 SDK, то полученная программа никогда не будет использовать NSUbiquitousKeyValueStore, где бы вы ни запускали. Невозможно построить более старый SDK, но при этом использовать функцию более нового SDK, если они доступны во время выполнения.

Отредактировано, чтобы добавить: см. Руководство по совместимости SDK Apple для получения дополнительной информации.

Вам нужно слабое звено рамки, содержащей NSUbiquitousKeyValueStore учебный класс. Затем в вашем коде сделать что-то вроде вещей:

if ([NSUbiquitousKeyValueStore class]) {
    // Class wil return non nil uf the class exists.
   NSUbiquitousKeyValueStore *NSUbiquitousKeyValueStore = [NSUbiquitousKeyValueStore new];
}
Другие вопросы по тегам