2016-08-09 2 views
0

J'utilise traitCollectionDidChange pour iOS 8 avec c'est bien. La documentation dit Available in iOS 8.0 and later Mais je suis capable de construire - et aussi la méthode est appelée même lorsque je compile (paramètres de construction/cible de déploiement iOS) pour iOS 7.Disponible dans iOS 8.0 et versions ultérieures - Construire pour iOS 7

Est-ce que cela signifie que l'iOS sdk est capable de construire traitCollectionDidChange pour IOS 7?

- (void) traitCollectionDidChange:(UITraitCollection *)previousTraitCollection{ 
    [super traitCollectionDidChange:previousTraitCollection]; 
} 

Peut-être qu'il a à voir avec « niveaux » avec je dois effacer: enter image description here

+4

Il peut être construit avec toutes les méthodes de la version SDK que vous construisez, qui est généralement la plus récente. Si vous avez essayé d'appeler cette méthode sur iOS 7, il se bloquerait cependant. – dan

Répondre

0

À mon avis, il est impossible, compilator vous dira que votre cible de déploiement est faible.

Je l'ai testé moi-même, ci-dessous, vous pouvez voir les résultats: enter image description here

enter image description here

+0

Hmm, étrange - je ne reçois aucune erreur. Je cours Xcode 7.3.1 –

+2

Parce que vous utilisez l'objectif-c et il utilise rapide – dan

+0

@dan vous avez raison, objc ne gère pas la disponibilité car il est fait par swift :( – Robert

0

Vous obtiendrez exécuter erreur de temps sur l'appareil avec iOS 8 < à bord. Cette erreur ressemblera à unrecognized selector sent to instance.

Vous pouvez effectuer un contrôle sur l'objet si elle peut gérer votre sélection comme ceci:

if ([self respondsToSelector:selector]) 
    [self performSelector:selector]; 

ou en cochant la version iOS installée sur votre appareil.

+0

En utilisant ceci, comment ne pas mettre dans la méthode "traitCollectionDidChange" dans le code –

+0

Just addbserver? –