184 votes

En Objective-C, quel est l'équivalent du mot-clé "instanceof" de Java ?

J'aimerais vérifier si un objet (par exemple someObject ) est assignable (castable) à une variable d'un autre type (par ex. SpecifiedType ). En Java, je peux écrire :

someObject instanceof SpecifiedType

Une question connexe consiste à déterminer si le type d'exécution d'un objet est égal à un autre type. En Java, je peux écrire

someObject.getClass().equals(SpecifiedType.class)

Comment cela peut-il être réalisé en Objective-C ?

261voto

mouviciel Points 36624

Essayer [myObject class] pour obtenir la classe d'un objet.

Vous pouvez faire des comparaisons exactes avec :

if ([myObject class] == [MyClass class])

mais pas en utilisant directement MyClass l'identifiant.

De même, vous pouvez savoir si l'objet appartient à une sous-classe de votre classe avec :

if ([myObject isKindOfClass:[AnObject class]])

comme suggéré par Jon Skeet et zoul.

37voto

Jon Skeet Points 692016

De Wikipedia :

En Objective-C, par exemple, la méthode générique Object y NSObject (en Cocoa/OpenStep), qui s'est avéré isMemberOfClass: qui renvoie true si l'argument de la méthode est une instance de la classe spécifiée. La méthode méthode isKindOfClass: a retourne vrai si l'argument hérite de la classe spécifiée.

isKindOfClass: serait le plus proche de instanceof Il semble que ce soit le cas.

9voto

zoul Points 51637

Voir le isKindOfClass : dans la méthode NSObject la documentation. (L'avertissement habituel pour ce genre de question est que la vérification de la classe d'objet est souvent le signe d'une erreur).

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