импортировать другой интерфейс в зависимости от версии iOS - PullRequest
0 голосов
/ 26 марта 2012

Я создал класс CustomURLConnection.

Если моя версия iOS больше 5.0, тогда я хочу использовать

@interface CustomURLConnection : NSURLConnection<NSURLConnectionDataDelegate,NSURLConnectionDelegate>

или я хочу использовать

@interface CustomURLConnection : NSURLConnection 

Как бы я поступил об этом?

Ответы [ 3 ]

2 голосов
/ 26 марта 2012

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

Таким образом, вы ничего не можете сделать с @interface, чтобы он выглядел по-разному в зависимости от версии ОС, на которой запущено приложение. Что вы ожидаете от него - распечатать все предупреждения компилятора, которые вы получили бы?

В мире Objective-C лучшим решением всегда является сборка на основе новейшего SDK, установка наименьшей версии iOS, для которой разработано приложение, в Info.plist и проверка во время выполнения (с использованием NSClassFromString, respondsToSelector: и т. д.) для любых функций, которые могут отсутствовать в результате.

В вашем случае не должно быть абсолютно никаких проблем, просто оставив там объявления протоколов и не подумав дважды.

2 голосов
/ 26 марта 2012

Вы можете сделать это, используя директивы препроцессора:

#ifdef __IPHONE_5_0 
//Put your ios 5 specific code here
#else
//Put your other code here
#endif
1 голос
/ 26 марта 2012

Вы создаете и продаете две отдельные версии приложения?

Директивы препроцессора имеют смысл, только если у вас есть несколько версий приложения, которые скомпилированы отдельно. Если у вас есть одно приложение, которое должно вести себя по-разному в зависимости от версии iOS пользователя, вам нужно будет сделать это с проверками во время выполнения.

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