Existe-t-il un moyen de tester si une méthode existe dans Objective-C?
J'essaye d'ajouter un garde pour voir si mon objet a la méthode avant de l'appeler.
objective-c
teepusink
la source
la source
- forwardInvocation:
).Réponses:
la source
Il y a aussi le message statique instancesRespondToSelector: (SEL) selector Vous l'appeleriez comme ceci:
ou comme ça:
Cela peut être utile si vous souhaitez appeler un constructeur ou un autre en fonction de cela (je veux dire, avant d'avoir l'instance elle-même).
la source
Utilisez
respondsToSelector:
. De la documentation :la source
Vous recherchez des répondsToSelector: -
Comme Donal le dit, ce qui précède vous dit que foo peut certainement gérer la réception du sélecteur de barre. Cependant, si foo est un proxy qui transmet la barre à un objet sous-jacent qui recevra le message de barre, alors respondsToSelector: vous dira NON, même si le message sera transféré à un objet qui répond à la barre.
la source
La vérification des sélecteurs avec respondsToSelector est normalement réservée aux méthodes déléguées. Vous ne devriez pas utiliser forwardInvocation ou proxy pour les méthodes de délégué. Si vous devez utiliser respondsToSelector dans d'autres situations, vous voudrez peut-être vous assurer qu'il n'y a pas de manière plus appropriée de concevoir votre programme.
la source