Swift is、isMember、isKind

1. is是关键字.可以用于任何类型的判断.包括了非对象类型,如Int等类型.或者判断对象是参数给定的类或是子类

let a = 10
if a is Int {
    print("YES")
}

let a = NSObject()
if a is NSObject {
    print("YES")
}
2. 注意,is是判断类型的. 如果枚举的值是Int,用枚举值去判断是否是Int得到的结果会是false,因为是枚举类型.
enum MyEnumState : Int {
    case state1         = 0      
    case state2         = 1 
}

let a = MyEnumState.state1
if a is Int { // Cast from 'MyEnumState' to unrelated type 'Int' always fails
    print("YES") // Will never be executed
}
else {
    print("NO") // 执行
}

3. 判断类的时候效果参考isKindOfClass,如果是该类或者是子类都会返回YES

4. isMember和isKind方法

isMember和isKind不是关键字,属于遵循NSObjectProtocol协议并且实现对应方法的协议方法(NSObject默认实现了这些方法,所以继承NSObject就不需要去实现这些方法),用法和is不太一样.

let a = NSObject()
if a.isKind(of: NSObject.self) {
    print("YES");
}

你可能感兴趣的:(Swift is、isMember、isKind)