2013-10-01 4 views
1

У меня есть класс, который использует NSURLSession, и мне все еще нужно поддерживать iOS 6. Когда я пытаюсь скомпилировать таргетинг на iOS 6, он терпит неудачу, так как NSURLSession не существует.Предотвращение компиляции классов на конкретную версию iOS

Как отключить этот класс от компиляции для iOS 6?

+0

Хм, может быть, вы могли бы проверить текущую версию и разделить код соответственно ... Как здесь HTTP://stackoverflow.com/questions/7848766/how-can-we-programmatically-detect-which-ios-version-is-device-running-on – Yanchi

+0

Я могу использовать проверку '#if __IPHONE_OS_VERSION_MAX_ALLOWED> = 70000', которая будет компилироваться на IOS7, но его не очень красиво, поскольку он должен быть над всем файлом. – Tony

+0

Предложение Yanchi полезно, если вы не хотите, чтобы приложение вылетало из-за нераспознанных селекторов и т. д. при работе на устройстве. Если вы просто хотите игнорировать файл, чтобы Xcode 4 позволял вам скомпилировать остальные, удалите его из цели, как указано здесь: http://stackoverflow.com/questions/2561715/xcode-is-there-a- location-flag-to-prevent-a-class-from-compiling – Kamaros

ответ

1

Если вам нужно поддерживать как iOS 7, так и iOS 6.x, то ваш базовый sdk должен быть iOS7, а целью развертывания iOS должен быть iOS 6.0.

Вы должны модифицировать свой класс, так что ваше приложение поддерживает как IOS 7 и IOS 6.x

if ([NSURLSession class]) { 
    // Use NSURLSession 
} 
else { 
    // Start background task, iOS 6 way 
} 
+0

В основном люди просто устанавливают «базовый SDK» на «iOS Latest» в эти дни, но в остальном согласны. –

Смежные вопросы