Je veux vérifier le type d'un objet. Comment puis je faire ça?
Le scénario est que j'obtiens un objet. Si cet objet est de type A, effectuez quelques opérations. S'il est de type B, effectuez quelques opérations. Actuellement, le type de l'objet est C qui est parent de A et B.
J'ai deux classes AViewController
et BViewController
. L'objet que je reçois dans UIViewController
. Maintenant, comment vérifier si l'objet est AViewController
ou BViewController
?
if([some_object isKindOfClass:[A_Class_Name class]])
{
// do somthing
}
Il existe certaines méthodes sur NSObject qui vous permettent de vérifier les classes.
Il y a d'abord -class
qui renverra la classe de votre objet. Cela retournera soit AViewController ou BViewController.
Ensuite, il y a deux méthodes, -isKindofClass:
et isMemberOfClass:
.
-isKindOfClass:
comparera le récepteur avec la classe passée en argument et retournera vrai ou faux selon que la classe est du même type ou d'une sous-classe de la classe donnée.
-isMemberOfClass:
comparera le récepteur avec la classe passée comme argument et retournera vrai ou faux selon que la classe est strictement la même classe que la classe donnée.
Un modèle plus courant dans Objective-C consiste à vérifier si l'objet répond aux méthodes qui vous intéressent. Exemple:
if ([object respondsToSelector:@selector(length)]) {
// Do something
}
if ([object conformsToProtocol:@protocol(NSObject)]) {
// Do something
}