Missing NSObject introspection methods. isStrictSubclassOfClass(), isStrictSuperclassOfClass() and isSuperclassOfClass()
extension NSObject {
class func isStrictSubclassOfClass(aClass: AnyClass) -> Bool {
return isSubclassOfClass(aClass) && self !== aClass.self
}
class func isStrictSuperclassOfClass(aClass: AnyClass) -> Bool {
return isSuperclassOfClass(aClass) && self !== aClass.self
}
class func isSuperclassOfClass(aClass: AnyClass) -> Bool {
return aClass.isSubclassOfClass(self)
}
}
UIView().isMemberOfClass(UIView) // true
UIImageView().isMemberOfClass(UIView) // false
NSObject().isMemberOfClass(UIView) // false
UIView().isKindOfClass(UIView) // true
UIImageView().isKindOfClass(UIView) // true
NSObject().isKindOfClass(UIView) // false
UIView.isSubclassOfClass(UIView) // true
UIImageView.isSubclassOfClass(UIView) // true
NSObject.isSubclassOfClass(UIView) // false
UIView.isStrictSubclassOfClass(UIView) // false
UIImageView.isStrictSubclassOfClass(UIView) // true
NSObject.isStrictSubclassOfClass(UIView) // false
UIView.isSuperclassOfClass(UIView) // true
UIImageView.isSuperclassOfClass(UIView) // false
NSObject.isSuperclassOfClass(UIView) // true
UIView.isStrictSuperclassOfClass(UIView) // false
UIImageView.isStrictSuperclassOfClass(UIView) // false
NSObject.isStrictSuperclassOfClass(UIView) // true