Comment puis-je tester si un objet est une instance d'une classe particulière dans Objective-C? Disons que je veux voir si l'objet a est une instance de classe b ou de classe c, comment dois-je procéder?
objective-c
futureelite7
la source
la source
class_getName
OverNSStringFromClass
? S'il n'y en a pas, cette réponse doit être ajustée.Vous pouvez également utiliser
sur n'importe quel NSObject
la source
Que signifie isKindOfClass dans la documentation Apple
Soyez prudent lorsque vous utilisez cette méthode sur des objets représentés par un cluster de classes. En raison de la nature des clusters de classes, l'objet que vous récupérez peut ne pas toujours être le type que vous attendiez. Si vous appelez une méthode qui renvoie un cluster de classes, le type exact renvoyé par la méthode est le meilleur indicateur de ce que vous pouvez faire avec cet objet. Par exemple, si une méthode renvoie un pointeur sur un objet NSArray, vous ne devez pas utiliser cette méthode pour voir si le tableau est modifiable, comme indiqué dans le code suivant:
Si vous utilisez de telles constructions dans votre code, vous pourriez penser qu'il est correct de modifier un objet qui en réalité ne devrait pas être modifié. Cela pourrait alors créer des problèmes pour d'autres codes qui s'attendaient à ce que l'objet reste inchangé.
la source
-isKindOfClass:
&-isMemberOfClass:
ne doit pas être utilisé pour identifier des objets dans un cluster de classes.Si vous souhaitez rechercher une classe spécifique, vous pouvez utiliser
la source
si vous voulez obtenir le nom de la classe, appelez simplement: -
la source
Vous pouvez également vérifier le temps d'exécution. Mettre un point d'arrêt dans le code et écrire dans la console (lldb)
Comme ça..
la source