1. is是關(guān)鍵字.可以用于任何類型的判斷.包括了非對(duì)象類型,如Int等類型.或者判斷對(duì)象是參數(shù)給定的類或是子類
let a = 10
if a is Int {
print("YES")
}
let a = NSObject()
if a is NSObject {
print("YES")
}
2. 注意,is是判斷類型的. 如果枚舉的值是Int,用枚舉值去判斷是否是Int得到的結(jié)果會(huì)是false,因?yàn)槭敲杜e類型.
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") // 執(zhí)行
}
3. 判斷類的時(shí)候效果參考isKindOfClass,如果是該類或者是子類都會(huì)返回YES
4. isMember和isKind方法
isMember和isKind不是關(guān)鍵字,屬于遵循NSObjectProtocol協(xié)議并且實(shí)現(xiàn)對(duì)應(yīng)方法的協(xié)議方法(NSObject默認(rèn)實(shí)現(xiàn)了這些方法,所以繼承NSObject就不需要去實(shí)現(xiàn)這些方法),用法和is不太一樣.
let a = NSObject()
if a.isKind(of: NSObject.self) {
print("YES");
}