码迷,mamicode.com
首页 > 其他好文 > 详细

析构方法 deinit

时间:2017-08-19 12:52:43      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:close   地址   self   构造器   关闭   html   htm   eve   ini   

/*

 析构方法:

 对象的内存被回收前被隐式调用的方法, 对应OC的dealloc方法

 主要执行一些额外操作, 例如释放一些持有资源, 关闭文件, 断开网络等

 */

class FileHandle {

    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:FileHandle? = FileHandle(path: "/Users/hanjunqiang/Desktop/StudyEveryDay/H5/第一阶段/小说.html") //测试地址, 换成你自己路径地址文件即可

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) {

        self.age = age

        super.init(name: "hjq")

    }

    deinit {

        //如果父类的析构方法不会被自动调用, 那么我们还需要关心父类

        //但是如果这样做对子类是比较苦逼的

        print("SuperMan deinit")

    }

}

var sm:SuperMan? = SuperMan(age: 25)

sm = nil

 

析构方法 deinit

标签:close   地址   self   构造器   关闭   html   htm   eve   ini   

原文地址:http://www.cnblogs.com/lurenq/p/7364469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!