Was ist der Unterschied zwischen den isKindOfClass:(Class)aClass
und den isMemberOfClass:(Class)aClass
Funktionen? Ich weiß, dass es etwas Kleines ist, eines ist global, während das andere eine genaue Klassenübereinstimmung ist, aber ich brauche jemanden, der angibt, welches was ist.
In Swift isKind(of aClass: AnyClass)
und isMember(of aClass: AnyClass)
.
quelle
isKindOfClass:
Gibt an, ob ein Objekt von einer bestimmten Klasse erbtisMemberOfClass:
Gibt an, ob ein Objekt eine Instanz einer bestimmten Klasse ist.quelle
Annehmen
dann
Grundsätzlich
-isMemberOfClass:
gilt: Wenn die Instanz genau der angegebenen Klasse entspricht,-isKindOfClass:
gilt dies, wenn die Instanz genau der angegebenen Klasse entspricht oder wenn einer der Vorfahren der Instanz der angegebenen Klasse angehört.-isMemberOfClass:
wird selten verwendet.quelle
quelle
isKindOfClass-> gibt YES zurück, wenn das Objekt eine Instanz dieser Klasse oder eine Instanz einer Klasse ist, die von ihr geerbt wurde.
isMemberOfClass: Gibt YES zurück, wenn das Objekt eine Instanz dieser Klasse ist, aber Nein, falls: eine Instanz einer Klasse, die von ihr geerbt wurde.
Beispiel ist gut genug in jtbandes Antwort.
quelle
Aufgrund von Klassenclustern kann isMemberOfClass Ihnen eine Antwort geben, die Sie möglicherweise nicht erwarten. In vielen Fällen ist es wahrscheinlicher, dass Ihre beste Wahl lautet: - (BOOL) entspricht dem Protokoll: (SEL) aSelector oder - (BOOL) entspricht dem Protokoll: (Protokoll *) entspricht dem Protokoll. Das heißt, es ist besser, diese zu testen, wenn sie Ihren Anforderungen entsprechen, als Klasse / Unterklasse zu testen.
Siehe Apple Doc für NSObject-Klasse und -Protokoll:
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
quelle