Je voudrais vérifier si un objet (par exemple someObject
) est assignable à une variable d'un autre type (par exemple 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 fait en Objective-C?
Essayez [myObject class]
pour retourner la classe d'un objet.
Vous pouvez faire des comparaisons exactes avec:
if ([myObject class] == [MyClass class])
mais pas en utilisant directement MyClass
identifiant.
De même, vous pouvez trouver si l'objet est une sous-classe de votre classe avec:
if ([myObject isKindOfClass:[AnObject class]])
comme suggéré par Jon Skeet et Zoul.
De Wikipedia :
En Objective-C, par exemple, le générique
Object
etNSObject
(dans Cocoa/OpenStep) fournissent la méthodeisMemberOfClass:
qui renvoietrue
si l'argument de la méthode est une instance de la classe spécifiée. La méthodeisKindOfClass:
retourne analogiquement la valeur true si l'argument hérite de la classe spécifiée.
isKindOfClass:
serait le plus proche de instanceof
, par ses sons.
Voir la méthode isKindOfClass: dans la documentation NSObject . (Le mot d'avertissement habituel pour cette question est que vérifier la classe d'objet est souvent le signe de faire quelque chose de mal.)