Вопрос

ПРИВЕТ всем

Я хочу создать одно приложение для 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];
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top