Jaka jest różnica między isKindOfClass:(Class)aClass
a isMemberOfClass:(Class)aClass
funkcji? Wiem, że jest to coś małego, na przykład, jedno jest globalne, a drugie jest dokładnym dopasowaniem klasy, ale potrzebuję kogoś, kto określi, która jest odpowiednia.
W Swift isKind(of aClass: AnyClass)
i isMember(of aClass: AnyClass)
.
ios
objective-c
swift
class
inheritance
NoodleOfDeath
źródło
źródło
isKindOfClass:
wskazuje, czy obiekt dziedziczy z danej klasyisMemberOfClass:
wskazuje, czy obiekt jest instancją danej klasy.źródło
Przypuszczać
następnie
Zasadniczo
-isMemberOfClass:
ma wartość true, jeśli instancja należy dokładnie do określonej klasy, a-isKindOfClass:
true, jeśli instancja należy dokładnie do określonej klasy lub jeśli jeden z przodków instancji należy do określonej klasy.-isMemberOfClass:
jest rzadko używany.źródło
źródło
isKindOfClass-> return YES, gdy obiekt jest instancją tej klasy lub instancją klasy, która jest po niej dziedziczona.
isMemberOfClass: zwraca TAK, gdy obiekt jest instancją tej klasy, ale nie w przypadku: instancja klasy, która jest z niej dziedziczona.
przykład jest wystarczająco dobry w odpowiedzi jtbandes.
źródło
Ze względu na klastry klas isMemberOfClass może udzielić odpowiedzi, której możesz się nie spodziewać. W wielu przypadkach najlepszym wyborem będzie prawdopodobnie - (BOOL) complsToProtocol: (SEL) aSelector lub - (BOOL) complsToProtocol: (Protocol *) aProtocol. To znaczy, lepiej je przetestować, jeśli mogą odpowiedzieć na twoje potrzeby, niż testować klasę / podklasę.
Zobacz dokumentację Apple dla klasy i protokołu 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
źródło