Je voudrais vérifier si un object (par exemple, someObject
) est assignable (cast- someObject
) à une variable d’un autre type (par exemple, SpecifiedType
). En Java, je peux écrire:
someObject instanceof SpecifiedType
Une question connexe est de savoir si le type d’exécution d’un object 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 renvoyer la classe d’un object.
Vous pouvez faire des comparaisons exactes avec:
if ([myObject class] == [MyClass class])
mais pas en utilisant directement l’identifiant MyClass
.
De même, vous pouvez trouver si l’object est d’une sous-classe de votre classe avec:
if ([myObject isKindOfClass:[AnObject class]])
comme suggéré par Jon Skeet et Zoul.
De Wikipedia :
Dans Objective-C, par exemple, les
Object
génériques etNSObject
(dans Cocoa / OpenStep) fournissent tous deux la méthodeisMemberOfClass:
qui renvoietrue
si l’argument de la méthode est une instance de la classe spécifiée. La méthodeisKindOfClass:
renvoie de manière analogue true si l’argument hérite de la classe spécifiée.
isKindOfClass:
serait le plus proche de instanceof
, au son de celui-ci.
Voir la méthode isKindOfClass: dans la documentation NSObject . (Le mot d’avertissement habituel pour une telle question est que la vérification de la classe d’object est souvent le signe d’une erreur.)