Skip to content

Instantly share code, notes, and snippets.

@mickmaccallum
Created May 5, 2015 17:50
Show Gist options
  • Save mickmaccallum/1b6a02b731b3b14940dd to your computer and use it in GitHub Desktop.
Save mickmaccallum/1b6a02b731b3b14940dd to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment