¿Cuál es la diferencia entre isKindOfClass:(Class)aClass
las isMemberOfClass:(Class)aClass
funciones y? Sé que es algo pequeño, uno es global, mientras que el otro es una coincidencia de clase exacta, pero necesito que alguien especifique cuál es cuál, por favor.
En Swift isKind(of aClass: AnyClass)
y isMember(of aClass: AnyClass)
.
fuente
isKindOfClass:
indica si un objeto hereda de una clase dadaisMemberOfClass:
indica si un objeto es una instancia de una clase dada.fuente
Suponer
luego
Básicamente,
-isMemberOfClass:
es cierto si la instancia es exactamente de la clase especificada, mientras que-isKindOfClass:
es cierto si la instancia es exactamente de la clase especificada o si uno de los antepasados de la instancia es de la clase especificada.-isMemberOfClass:
rara vez se usa.fuente
fuente
isKindOfClass-> devuelve YES cuando el objeto es instancia de esa clase o instancia de una clase que se hereda de él.
isMemberOfClass: devuelve YES cuando el objeto es una instancia de esa clase pero No en el caso: instancia de una clase que se hereda de ella.
ejemplo es lo suficientemente bueno en la respuesta jtbandes.
fuente
Debido a los clústeres de clase, isMemberOfClass puede darle una respuesta que podría no esperar. En muchos casos es más probable que su mejor opción sea - (BOOL) conformsToProtocol: (SEL) aSelector o - (BOOL) conformsToProtocol: (Protocol *) aProtocol. Es decir, es mejor probarlos si pueden responder a su necesidad en lugar de probar la clase / subclase.
Vea el documento de Apple para la clase y protocolo NSObject:
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
fuente