En Objective-C, ce qui est l'équivalent du mot-clé « instanceof » de Java?
-
22-08-2019 - |
Question
Je souhaite vérifier si un objet (par exemple someObject
) est assignable (coulée en mesure) à une variable d'un autre type (par exemple SpecifiedType
). En Java, je peux écrire:
someObject instanceof SpecifiedType
Une question connexe est de trouver 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?
La solution
Essayez [myObject class]
pour retourner la classe d'un objet.
Vous pouvez faire des comparaisons précises avec:
if ([myObject class] == [MyClass class])
mais pas en utilisant identifiant directement MyClass
.
Similairement, vous pouvez trouver si l'objet est d'une sous-classe de votre classe:
if ([myObject isKindOfClass:[AnObject class]])
tel que suggéré par Jon Skeet et Zoul.
Autres conseils
De Wikipedia :
Dans Objective-C, par exemple, les deux
Object
générique etNSObject
(en Cacao / OpenStep) fournir le procédéisMemberOfClass:
qui retournetrue
si l'argument de la méthode est un instance de la classe spécifiée. le ProcédéisKindOfClass:
analogue renvoie true si l'argument hérite à partir de la classe spécifiée.
isKindOfClass:
serait plus proche de instanceof
, par les sons de celui-ci.