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