Создайте проект 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];
}