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");
}