import Foundation/* 析构方法 对象的内存被回收前夕被隐式调用的方法,对应OC的dealloc方法 主要执行一些额外 *** 作,例如释放一些持有资源,关闭文件,断开网络等 */class fileHandler{ var fd: Int32? // 文件描述符 // 指定构造器 init(path:String){ // 需要打开的文件路径,打开方式(只读) // open方法是UNIX的方法 let ret = open(path,O_RDONLY) if ret == -1{ fd = nil }else{ fd = ret } print("对象被创建") } // 析构方法 deinit{ // 关闭文件 if let ofd = fd{ close(ofd) } print("对象被销毁") }}var fh:fileHandler? = fileHandler(path: "/Users/Jonathan_Lee/Desktop/老员工奖.xlsx")// 当对象没有任何强引用时会被销毁fh = nil/* 析构方法的自动继承 父类的析构方法会被自动调用,不需要子类管理 */class Person { var name:String init(name:String){ self.name = name print("Person init") } deinit{ print("Person deinit") }}class SuperMan: Person { var age:Int init(age:Int){ .age = age super.init(name: "Swift") print("SuperMan init") } deinit{ // 如果父类的析构方法不会被自动调用,那么我们还需要关心父类 // 但是如果这样做对子类是比较痛苦的 print("SuperMan deinit") }}var sm: SuperMan? = SuperMan(age: 30)sm = nil总结
以上是内存溢出为你收集整理的Swift基础篇——析构方法全部内容,希望文章能够帮你解决Swift基础篇——析构方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)