iPhone проверьте версию прошивки
-
21-08-2019 - |
Вопрос
ПРИВЕТ всем
Я хочу создать одно приложение для iPhone 2.2. * и для версии 3.0.Некоторый метод в 2.2 * устарел в версии 3.0.( например , UITableViewCell setText и setLabel )
Есть ли какой-нибудь способ проверить, какая версия прошивки используется на iPhone, и настроить другой метод для использования
Решение
Вам нужно будет использовать директивы препроцессора для условной компиляции, такие как __IPHONE_3_0, и создать два отдельных исполняемых файла.
Например:
#ifdef __IPHONE_3_0 // code specific to version 3 #else // code specific to version 2 #end
Если вам нужно определить версию во время выполнения, вы можете использовать [[UIDevice currentDevice] systemVersion].Он возвращает строку с текущей версией iPhone OS.
Другие советы
Как я упоминал в комментариях ранее, проверьте: Как настроить таргетинг на конкретную версию iPhone?
Как упоминалось в другом ссылочном потоке, хотя вы можете использовать директивы препроцессора для генерации двух приложений из одной базы кода, вам все равно понадобятся два приложения (одно для 2.x и одно для 3.x)
Директива времени компиляции не может быть использована для принятия решения во время выполнения.
Более подробно в другой теме.
Альтернативное решение, просто проверьте с помощью RESPONSESTOSELECTOR.Например-
CGSize expectedLabelSize;
if ([subTitle respondsToSelector:@selector(sizeWithAttributes:)])
{
expectedLabelSize = [subTitle sizeWithAttributes:@{NSFontAttributeName:subTitleLabel.font}];
}else{
expectedLabelSize = [subTitle sizeWithFont:subTitleLabel.font constrainedToSize:subTitleLabel.frame.size lineBreakMode:NSLineBreakByWordWrapping];
}