Swift—— is和 as、 as? 、 as! 区别

is用来判断是否为某种类型 ,as用来做强制类型转换

一、 is 判断类型

protocol Runnable {func run() }
class Persion {}
class Student:Persion,Runnable{
    func run() {
        print("跑起来")
    }
    func study(){
        print("study")
    }
}

//判断类型
var stu: Any = 10
print(stu is Int)//true
stu = "jack"
print(stu is String)//true
stu = Student()
print(stu is Persion)//true
print(stu is Student)//true
print(stu is Runnable)//true
例2
 let btn = UIButton(type: .custom)
 print((btn is UIButton)) //true
 print((btn is UIControl))//true
 print((btn is UIView))//true
 print((btn is UILabel))//false

 

二、as强制转换

protocol Runnable {func run() }
class Persion {}
class Student:Persion,Runnable{
    func run() {
        print("跑起来")
    }
    func study(){
        print("study")
    }
}

var stu:Any = 10
(stu as? Student)?.study() // 没有调用
(stu as! Student).study() // 闪退
stu = Student()
(stu as? Student)?.study() //调用
(stu as! Student).study() //调用
(stu as? Runnable)?.run() //调用

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值