В чем разница между isKindOfClass:(Class)aClass
иisMemberOfClass:(Class)aClass
функции? Я знаю, что это что-то маленькое, одно глобальное, а другое - точное совпадение классов, но мне нужно, чтобы кто-то уточнил, что именно, пожалуйста.
В Свифт isKind(of aClass: AnyClass)
и isMember(of aClass: AnyClass)
.
источник
isKindOfClass:
указывает, наследует ли объект от данного классаisMemberOfClass:
указывает, является ли объект экземпляром данного класса.источник
предполагать
затем
По сути,
-isMemberOfClass:
это истина, если экземпляр точно соответствует указанному классу, и-isKindOfClass:
истина, если экземпляр точно принадлежит указанному классу или если один из предков экземпляра принадлежит указанному классу.-isMemberOfClass:
редко используется.источник
источник
isKindOfClass-> возвращает YES, когда объект является экземпляром этого класса или экземпляром класса, который унаследован от него.
isMemberOfClass: возвращает YES, когда объект является экземпляром этого класса, но No in case: экземпляр класса, который унаследован от него.
Пример достаточно хорош в ответе jtbandes.
источник
Из-за кластеров классов isMemberOfClass может дать вам ответ, который вы можете не ожидать. Во многих случаях ваш лучший выбор, скорее всего, будет - (BOOL) conformsToProtocol: (SEL) aSelector или - (BOOL) conformsToProtocol: (Protocol *) aProtocol. Т.е. лучше проверить их, если они могут удовлетворить ваши потребности, а не тестировать класс / подкласс.
Смотрите Apple Doc для класса и протокола 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
источник