obsolète avertissements dans xcode et comment gérer la dépréciation
if ([self respondsToSelector:@selector(dismissViewControllerAnimated:completion:)])
{[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];} //post-iOS6.0
else {[self dismissModalViewControllerAnimated:YES];} //pre-iOS6.0
Je suis en train de faire l'répond à sélecteur (ci-dessus) du code pour gérer des méthodes obsolètes. De cette façon, mon application est compatible avec les anciennes versions d'iOS, mais je me garde dans mon code déclarant: "'dismissModalViewControllerAnimated:" est obsolète: la première obsolète dans iOS 6.0"
Personnellement, je n'aime aucun avertissement dans mon code, mais plus important encore, j'ai lu quelque part qu'apple va se plaindre à propos des avertissements dans votre code.
1) Apple Va se plaindre à propos des avertissements dans votre code?
2) Suis-je la manipulation des méthodes obsolètes correctement?
3) il y a moyen de tourner méthode dépréciée méthode des avertissements?
Bonne réponse, mais ma question est plus d'une question générale de savoir quoi faire dans une situation semblable à cela? Je veux les aider, au moins 1 ou deux versions, donc, dans ce scénario, vous avez raison, mais comment sur les autres scénarios où vous auriez besoin de les soutenir à la fois? comment géreriez-vous? Comme je l'ai dit ci-dessus et de laisser les avertissements?
Vous ne bénéficierez pas de l'autodérision avertissements tant que la méthode n'était pas obsolète avant votre "Cible de Déploiement". Si la méthode est déconseillée avant votre "Cible de Déploiement", alors vous ne devriez pas prendre toute tentative visant à utiliser la méthode dépréciée. Donc, il ya vraiment peu de traiter avec la réalité.
D'accord, mais si la classe a été écrit avec la ré-utilisation à l'esprit, vous pourriez ne pas savoir ce que la cible de déploiement allait être à l'avance. Cela dit, j'ai peut être inclus à faire
#if
logique basée sur __IPHONE_OS_VERSION_MIN_REQUIRED
dans ce scénario, plutôt que de supprimer les avertissements.OriginalL'auteur ConfusedDeer | 2013-09-01
Vous devez vous connecter pour publier un commentaire.
Apple est au courant de rien au moment de la compilation des avertissements de vous recevoir avec votre code.
Oui, vous êtes de la manipulation de cette pratique correctement. Clairement, dans ce cas, vous avez seulement besoin de passer par cet effort si vous êtes soutenir iOS antérieures à la version 5.0. Mais, en général, la technique pour tester si une méthode peut être invoquée et puis l'appel de la approprié rendu est tout à fait correcte.
Si vous souhaitez désactiver l'avertissement, il vous suffit de supprimer temporairement l'avertissement, puis rallumez-le ensuite à l'aide de la
#pragma
syntaxe:Par ailleurs, si vous voulez savoir ce que le
-W
code de votre avertissement, allez à votre session de navigation, sélectionnez la version récente qui inclus l'avertissement, et d'élargir le journal, et vous verrez qu'il n':Également noter que, bien que vous pourriez supprimer l'avertissement comme je l'ai illustré ci-dessus, dans la pratique, vous aurez rarement besoin de le faire. À l'aide de votre exemple, si votre projet iOS cible de déploiement a été 4.3, vous n'en aurez pas l'avertissement. Et si votre cible de déploiement a été 6.0 ou supérieur, vous obtiendrez de cette mise en garde, mais encore une fois, vous n'auriez probablement pas besoin de ce code conditionnel à l'appel
dismissModalViewControllerAnimated
car efficace iOS 5.0, vous pouvez toujours utiliserdismissViewControllerAnimated
.La seule fois que vous aurez besoin de supprimer cette alerte dans votre code si vous avez le code source, pour être inclus dans les projets à l'avenir, pour que vous ne savez pas ce que la cible de déploiement sera. À l'aide de votre exemple, si vous ne savez pas si le code ci-dessus seront inclus dans un projet avec un 4.3 deployment target ou un 5.0+ cible de déploiement. Dans ce cas, cette syntaxe est tout à fait utile. Mais, là encore, je vous pourrait également utiliser le conditionnel contrôles sur
__IPHONE_OS_VERSION_MIN_REQUIRED
, par exemple:OriginalL'auteur Rob
Si vous êtes vraiment intéressé dans la rétro-compatibilité, il y a un tutoriel ici Ray Wenderlich ici
OriginalL'auteur Kevin
Oui de Nombreuses mises en garde sont présents et à rejeter vue modal pour fixer le Remplacer:
dans ios 6 ce sont:-
[self dismissViewControllerAnimated:NO completion:nil];
[self presentViewController:vc animated:NO completion:nil];
OriginalL'auteur Gaurav