Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
#1

Переопределение метода только в iOS >= 7.0 - Objective-C

27.03.2014, 17:07. Просмотров 769. Ответов 4
Метки нет (Все метки)

Такое возможно ? К примеру у меня есть класс, в нем метод
Objective-C
1
2
3
- (void)drawRect:(CGRect)rect {
     ....
}
В iOS < 7.0 он вообще не должен переопределяться. Я понимаю что нужно использовать директивы препроцессора но где-то туплю...
Вот что-то типо этого, только __IPHONE_OS_VERSION_MAX_ALLOWED - это константа, а мне нужно проверять версию на которой запущено приложение...
Objective-C
1
2
3
4
5
#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_7_0
- (void)drawRect:(CGRect)rect {
     ...
}
#endif
Кто что может подсказать ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 17:07     Переопределение метода только в iOS >= 7.0
Посмотрите здесь:
Objective-C Переопределение метода в сабклассе делегата
Objective-C Новостное приложение iOS
Objective-C Открыть сайт в iOS
Программирование под iOS-устройства Objective-C
Написание калькулятора для iOS Objective-C
Objective-C iOS: портировать C#.NET в Objective-C
Что нужно учить разработчику iOS? Objective-C
Подойдёт ли ноутбук под программирование на ios? Objective-C
Взаимодействие iOS и Windows CE по протоколу TCP/IP Objective-C
Objective-C Посоветуйте книги для программирования на ios
C# Переопределение метода

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
667 / 529 / 45
Регистрация: 05.03.2010
Сообщений: 1,273
28.03.2014, 00:34     Переопределение метода только в iOS >= 7.0 #2
Objective-C
1
[[UIDevice currentDevice] systemVersion]
и в дополнение
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
 
- (void)drawRect:(CGRect)rect {
    if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
        [super drawRect:rect];
    } else {
        // ...
    }
}
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
28.03.2014, 12:15  [ТС]     Переопределение метода только в iOS >= 7.0 #3
Нет нето... я имею ввиду что бы метод вообще не переопределялся в определенной версии iOS
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
28.03.2014, 12:44     Переопределение метода только в iOS >= 7.0 #4
Pro2005, это как вы себе представляете?
Макросы они на этапе линковки сработают.
А дальше - рантайм, как показал Vorona.

Вы можете только подменить имплементацию. Например на какой-либо свой -customDrawRect
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
28.03.2014, 12:53  [ТС]     Переопределение метода только в iOS >= 7.0 #5
Угу, понял...Спасибо !!!
Yandex
Объявления
28.03.2014, 12:53     Переопределение метода только в iOS >= 7.0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru