Question

Salut à tous

Je souhaite créer une application pour iPhone 2.2. * et pour la version 3.0. Certaines méthodes de 2.2 * sont obsolètes en 3.0. (comme UITableViewCell setText et setLabel)

Existe-t-il un moyen de vérifier la version du micrologiciel utilisée sur l'iPhone et de définir une méthode différente d'utilisation

Était-ce utile?

La solution

Vous devrez utiliser des directives de pré-processeur pour la compilation conditionnelle telles que __IPHONE_3_0 et créer deux exécutables distincts.

Par exemple:

 #ifdef __IPHONE_3_0
 // code specific to version 3
 #else
 // code specific to version 2
 #end

Si vous devez détecter la version au moment de l'exécution, vous pouvez utiliser [[UIDevice currentDevice] systemVersion]. Il retourne la chaîne avec la version actuelle du système d'exploitation iPhone.

Autres conseils

Comme je l'ai déjà mentionné dans les commentaires, vérifiez: comment cibler un Version iPhone?

Comme mentionné dans l'autre fil de référence, vous pouvez utiliser des directives de pré-processeur pour générer deux applications à partir d'une base de code, mais vous aurez toujours besoin de deux applications (une pour 2.x et une pour 3.x)

Une directive de compilation ne peut pas être utilisée pour prendre une décision d'exécution.

Il y a plus de détails dans l'autre fil.

Autre solution, vérifiez simplement en utilisant respondsToSelector. Par exemple -

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];
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top