Qual a diferença entre isKindOfClass:(Class)aClass
as isMemberOfClass:(Class)aClass
funções e? Eu sei que é algo pequeno, um é global enquanto o outro é uma correspondência de classe exata, mas preciso que alguém especifique qual é qual, por favor.
Em Swift isKind(of aClass: AnyClass)
e isMember(of aClass: AnyClass)
.
ios
objective-c
swift
class
inheritance
NoodleOfDeath
fonte
fonte
isKindOfClass:
indica se um objeto herda de uma determinada classeisMemberOfClass:
indica se um objeto é uma instância de uma determinada classe.fonte
Suponha
então
Basicamente,
-isMemberOfClass:
é verdadeiro se a instância for exatamente da classe especificada, enquanto-isKindOfClass:
é verdadeiro se a instância for exatamente da classe especificada ou se um dos ancestrais da instância for da classe especificada.-isMemberOfClass:
raramente é usado.fonte
fonte
isKindOfClass-> retorna YES quando o objeto é instância dessa classe ou instância de uma classe que é herdada dele.
isMemberOfClass: retorna YES quando o objeto é instância dessa classe, mas No case: instância de uma classe que é herdada dela.
exemplo é bom o suficiente na resposta jtbandes.
fonte
Devido aos clusters de classe, isMemberOfClass pode fornecer uma resposta que você não pode esperar. Em muitos casos, é mais provável que sua melhor opção seja - (BOOL) em conformidade com o protocolo: (SEL) aSeletor ou - (BOOL) em conformidade com o protocolo: (Protocolo *) aProtocolo. Ou seja, é melhor testá-los se eles puderem responder à sua necessidade, em vez de testar a classe / subclasse.
Consulte o documento da apple para obter a classe e o 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
fonte