4 votes

Quelle est la différence entre la signature d'une méthode et le sélecteur en Objective-C ?

Jusqu'à présent, je croyais que -(void)startToDoSomethingWithThis:(That*)thing andThat:(That*)otherThing a la "signature de méthode" suivante, qui est en même temps le sélecteur : -startToDoSomethingWithThis:andThat:

Mais maintenant quelqu'un a dit que le sélecteur n'est pas comme la signature de la méthode, et que la signature de la méthode contient aussi les arguments et leurs types. Est-ce exact ?

8voto

drawnonward Points 35444

Un sélecteur est le nom d'une méthode au sein d'une classe. Il est utilisé pour identifier la méthode, le plus souvent lorsqu'elle est appelée. Une signature est une description des types d'arguments et de retours. Elle est utilisée lors de l'appel d'une méthode arbitraire, par exemple par NSInvocation, pour organiser les arguments et faire de la place pour la valeur de retour. Plusieurs sélecteurs peuvent avoir la même signature.

SEL aSelector = @selector(method:foo:);
NSMethodSignature *aSignature = [theObject methodSignatureForSelector:aSelector];

NSMethodSignature est une enveloppe autour des types objc_method_description.

5voto

Dave DeLong Points 156978

C'est exact. Un sélecteur est le nom de la méthode. Une signature de méthode est une encapsulation du type de retour et des types d'arguments. Vous pouvez inspecter les signatures de méthode à l'aide de +[NSObject instanceMethodForSelector:] qui renvoie un NSMethodSignature objet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X