J'ai un appel comme celui-ci [Méthode de classe] et un avertissement disant que la classe ne peut pas répondre au message "méthode". Le message "method" n'existe pas mais mon code utilise un message inconnu en attrapant (en utilisant forwardingTargetForSelector) afin qu'il fonctionne bien et qu'il soit compilé pour fonctionner de cette façon. Comment puis-je cacher cet avertissement ennuyeux?Comment désactiver l'avertissement dans xcode sur une ligne spécifique?
12
A
Répondre
16
Si vous avez l'intention d'envoyer un éventuellement-inappliquées message à un objet, et vous savez que vous allez attraper les échecs, vous devez utiliser l'invocation:
id myClone = [anObject performSelector:@selector(copy)];
qui déclare votre intention plus directement que vous appelez une méthode qui peut ne pas exister, et vous êtes cool avec ça. C'est une façon plus claire de le faire que de supprimer l'avertissement ou de falsifier la méthode.
3
Vous pouvez définir une catégorie qui déclare cette méthode. Avoir la définition dans la portée au moment de la compilation permettrait d'éviter l'avertissement. Quelque chose comme
@interface MyClass (ShutUpTheCompilerMethods)
- (void)method;
@end
...
[MyClass method] //no warning here
Questions connexes
- 1. Désactiver Quickhelp dans Xcode 3.2
- 2. Comment désactiver un bouton dans Xcode?
- 3. Comment insérer une ligne sur une ligne spécifique dans plusieurs fichiers sous Unix?
- 4. C# Liaison sur une ligne spécifique dans la table
- 5. Comment mime supprimer une ligne spécifique dans un UITableView?
- 6. Comment activer une session uniquement dans une vue spécifique et la désactiver sur d'autres dans ASP.NET MVC
- 7. Supprimer une ligne spécifique d'un fichier texte?
- 8. Comment puis-je remplacer une ligne spécifique par un numéro de ligne dans un fichier texte?
- 9. Supprimer une ligne spécifique dans un .NET RichTextBox
- 10. ASP.NET Datagrid - masquer une ligne/colonne spécifique
- 11. svn diff une ligne spécifique dans un fichier
- 12. Xcode 3.2 documentation hors ligne?
- 13. Comment obtenir une référence à une ligne de table avec une valeur spécifique dans jQuery
- 14. Comment définir un attribut Xcode dans CMake pour une configuration spécifique?
- 15. Comment joindre une liste générique d'objets sur une propriété spécifique
- 16. Comment passer à une ligne d'entrée spécifique en Perl?
- 17. Comment désactiver l'anti-aliasing pour un JLabel spécifique?
- 18. XCode: Comment désactiver les messages d'erreur du compilateur dans la fenêtre du code source?
- 19. Comment créer une classe Framework dans XCode?
- 20. Comment désactiver pretty-printing (espace blanc/nouvelle ligne) dans XStream?
- 21. Comment définir une ligne ou une cellule spécifique dans un gridview (vb 2008)
- 22. C# Comment désactiver une touche
- 23. Comment positionner un DataGridView sur une ligne spécifique (de sorte que la ligne sélectionnée soit en haut)
- 24. Comment positionner un DataGridView sur une ligne spécifique (de sorte que la ligne sélectionnée soit en bas)?
- 25. Comment puis-je supprimer ou sélectionner une ligne d'une table ayant un numéro de ligne spécifique?
- 26. Lire une valeur d'élément spécifique basée sur un attribut spécifique dans Linq?
- 27. Comment tracer une ligne sur l'iPhone?
- 28. Créer une configuration exécutable globale (non spécifique à l'utilisateur) dans Xcode
- 29. xCode sur 10.5.2 Désinstallation
- 30. Comment créer une dépendance de cache sql spécifique à une ligne?
Merci. Je suppose que ce serait moins efficace si je devais créer un sélecteur à chaque appel. Sauf si je déclare tout mon @selector un et pour tous. – CodeFlakes
La différence de performance sera pratiquement indétectable. Si vous êtes inquiet, le profil. Ne pas optimiser prématurément. –
'performSelector' ne fonctionne que pour les méthodes dont les types d'arguments et le type de retour sont tous des objets; et qui n'a que 0, 1 ou 2 arguments – user102008