Je voudrais vérifier si un objet (par exemple someObject
) est assignable (castable) à 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 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?
Réponses:
Essayez
[myObject class]
de renvoyer la classe d'un objet.Vous pouvez faire des comparaisons exactes avec:
if ([myObject class] == [MyClass class])
mais pas en utilisant directement l'
MyClass
identifiant.De même, vous pouvez trouver si l'objet appartient à une sous-classe de votre classe avec:
if ([myObject isKindOfClass:[AnObject class]])
comme suggéré par Jon Skeet et zoul.
la source
if ([myObject isMemberOfClass:[MyClass class]])
De Wikipedia :
isKindOfClass:
serait le plus procheinstanceof
, par les sons de celui-ci.la source
Consultez 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'objets est souvent le signe d'une erreur.)
la source
+ (BOOL)conformsToProtocol:(Protocol *)aProtocol
.