Swift基础 类型检查、强转、对象的释放

类型检查

类型检查通过is与as两个操作符来实现。
is 操作符可以判断两个实例是否是同一个类。
as 操作符可以将元素转化为想转化的类。
as? 操作符可以将元素转化为想转化的类的可选类型。
as! 操作符可以将元素转化为想转化的类的明确类型。

比如在字典中取值,根据Key取到的可能有值,可能没有值,所以返回结果是一个可选类型。这个时候如果要赋值给一个变量,那么就需要进行类型转换。

Any与AnyObject

swift中针对不确定类型的对象有两种特殊的别名,Any和AnyObject。Any表示任意的类型,包括类、结构体、基本数据类型等等。AnyObject只能表示任意的类的实例对象,结构体对象不能用这个表示。

实例对象的销毁

析构是实例对象释放前所做的动作,需要释放它所占有的内存资源。
析构器 deinitializer 不需要任何参数。

    deinit {
    
    
        释放资源代码
    }

有继承关系的子类调用析构器的顺序是,先子类再父类。

class Person{
    
    
    let name : String
    var imageA : UIImage
    
    init(personName: String) {
    
    
        name = personName
        imageA = UIImage.init()
    }
    
    deinit {
    
    
        //释放imageA
        print("释放imageA")
    }
}

class Student: Person {
    
    
    var imageB : UIImage
    
    override init(personName: String) {
    
    
        imageB = UIImage.init();
        super.init(personName: personName)
    }
    
    deinit {
    
    
        //释放imageB
        print("释放imageB")
    }
}

class ViewController: UIViewController {
    
    

    override func viewDidLoad() {
    
    
        super.viewDidLoad()
        let xiaoMingStudent = Student.init(personName: "xiaoMing")
    }
}

运行结果:

释放imageB
释放imageA

猜你喜欢

转载自blog.csdn.net/kkkenty/article/details/124785488