Swift学习笔记

Swift - Any、AnyObject

2022-03-19  本文已影响0人  aven_kang
Any : 可以代表任意类型(枚举,结构体,类,也包括函数类型)
AnyObject : 可以代表任意类类型(在协议后面写上:AnyObject代表只有类能遵守这个协议)
截屏2022-02-23 下午2.26.04.png
class student : Runnable {}

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        var test : Any = 10
        test = "jack"
        test = student()
        
    }
}
Any类型的,基本上都可以赋值给这个对象,但如果是AnyObject类型的,只能是类去赋值
var inst1 = Array<Any>() // 数组
var inst2 = [Any](). //数组
var inst3 = Dictionary<String,String>() // 字典
var inst4 = [String:String]() // 字典
protocol Runnable {}

class Person {}
    
class student : Person,Runnable {
    func study() {
        
    }
}

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
     
        var stu:Any = 10
        (stu as? student)?.study()
      
    }
}

在(stu as? student)这里中,为什么使用as?,as意思是强制转换,而stu是any类型,也就是,转换可能失败所以使用as?,而后面的(stu as? student)?这个问号,主要是因为前面as?可能转换失败,那么这里必然不可能强制解包的,也是可选类型的。

上一篇 下一篇

猜你喜欢

热点阅读