Swift isMember isKind is的使用

Swift isMember isKind is的使用_第1张图片
Paste_Image.png
在编写代码时,经常碰到我创建的某个对象是否是某个类或者属于某个枚举,在Swift中可以使用isMember,isKind和is用来判断
1、isMember用来判断该对象是否为指定类的对象
2、isKind 用来判断该对象是否为指定类或者指定类的子类的对象
3、is用法与isKind类型,上面两种只能用于类对象的判断,对于枚举和结构体同样适用
示例:


class A: NSObject {}
class B: A {}

func doTest() {
let cla = A()
let clb = B()

cla.isMember(of: A.self)        // true
cla.isKind(of: A.self)          // true

clb.isMember(of: A.self)        // false
clb.isKind(of: A.self)          // true
clb.isMember(of: B.self)        // true

cla is A        // true      对于这种确定的类型,会报警告
cla is B        // false
clb is A        // true
clb is B        // true

}

对于非NSObject类,需要在对象定义时指定为AnyObject类型,因为普通类型没有isMember方法,写法如下


let cla: AnyObject = A()
let clb: AnyObject = B()

对于结构体或者枚举类型,不能使用继承,也就不能有子类的说法,但是可以实现某个协议,因此可以用is判断某个枚举或者结构体是否实现了某个协议,对于枚举或者结构体之间的判断,使用is是没有必要的


Swift isMember isKind is的使用_第2张图片
Paste_Image.png
结论:

对于普通的类、结构体、枚举是否属于的判断,可以使用is,如果有特殊的需求,需要判断某个类是否为特定的类,就使用isMember

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