iOS différence entre isKindOfClass et isMemberOfClass
Quelle est la différence entre le isKindOfClass:(Class)aClass
et la isMemberOfClass:(Class)aClass
fonctions?
Je sais que c'est quelque chose de petit, comme, l'une est globale, tandis que l'autre est une exacte correspondance de la classe, mais j'ai besoin de quelqu'un pour préciser qui est qui s'il vous plaît.
OriginalL'auteur NoodleOfDeath | 2010-09-06
Vous devez vous connecter pour publier un commentaire.
isKindOfClass:
retourne OUI si le récepteur est une instance de la classe spécifiée ou une instance d'une classe qui hérite de la classe spécifiée.isMemberOfClass:
retourne OUI si le récepteur est une instance de la classe spécifiée.La plupart du temps que vous souhaitez utiliser
isKindOfClass:
pour vous assurer que votre code fonctionne également avec des sous-classes.La NSObject Protocole De Référence parle un peu plus sur ces méthodes.
OriginalL'auteur Sebastian Celis
isKindOfClass:
indique si un objet hérite partir d'une classe donnéeisMemberOfClass:
indique si un objet est une instance de une classe donnée.isKindOfClass est également de retour OUI si l'objet est une instance d'une classe donnée. En d'autres termes isMemberOfClass est un sous-ensemble de isKindOfClass.
OriginalL'auteur jtbandes
Supposons que
puis
Fondamentalement,
-isMemberOfClass:
est true si l'instance est exactement de la classe spécifiée, tandis que-isKindOfClass:
est true si l'instance est exactement de la classe spécifiée, ou si l'un de l'instance ancêtres de la classe spécifiée.-isMemberOfClass:
est rarement utilisé.c'est très vrai. Vous pouvez utiliser isKindOfClass:[UIView classe] afin de s'assurer que tous les objets que vous traitez avec sont UIViews mais vous devez utiliser isMemberOfClass:[UIView classe] et/ou isMemberOfClass:[UISegmentedControl classe] à l'intérieur de certains instruction conditionnelle pour indiquer toute distincte de la mise en œuvre de l'opinion en se basant sur leurs immédiate de l'instance de la classe
OriginalL'auteur kennytm
OriginalL'auteur Alex Terente
isKindOfClass-> retour OUI lorsque l'objet est instance de cette classe ou d'une instance d'une classe qui hérite.
isMemberOfClass: retour OUI lorsque l'objet est instance de cette classe, mais Pas dans le cas: instance d'une classe qui hérite.
exemple est assez bon dans la jtbandes réponse.
OriginalL'auteur Ishu
En raison de clusters de classe, isMemberOfClass peut vous donner une réponse, vous ne pourriez pas attendre. Dans de nombreux cas, votre meilleur choix est plus susceptible d'être -(BOOL)conformsToProtocol:(SEL)aSelector ou - (BOOL)conformsToProtocol:(Protocole*)aProtocol. I. e, il est préférable de tester ces si elles peuvent répondre à votre besoin, plutôt que de tester la classe/sous-classe.
Voir apple doc pour la classe NSObject et protocole:
http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/cl/NSObject
http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intf/NSObject
OriginalL'auteur Art Swri