当前位置: > > > Swift - 类初始化和反初始化方法(init与deinit)

Swift - 类初始化和反初始化方法(init与deinit)

1,init():类的初始化方法(构造方法)
/********************************
使用默认构造函数
********************************/
class Student{
	//类属性
	var name:String = ""
	var number:Int = 0
}
var student = Student()

/********************************
自定义构造函数
********************************/
class Person{
	//类属性
	var name:String
	var age:Int

	//类构造函数
	init(newName:String, newAge:Int){
		self.name = newName
		self.age = newAge
	}

	//成员函数(实例方法)
	func say() -> String{
		return "我叫\(name)"
	}
}
var p = Person(newName: "hangge",newAge: 32)
print(p.say())

2,deinit():类反初始化方法(析构方法)
class DBClass{
    var conn:Connection? = Connection()
    deinit{
        //可以做一些清理工作
        self.conn!.close()
        self.conn = nil
    }
}

var db:DBClass? = DBClass()
db = nil //设置nil后即可执行deinit()方法
评论3
  • 3楼
    2017-11-29 15:02
    season

    //类方法
    func say() -> String{
    return "我叫\(name)"
    }

    这里的注释应该是 对象方法喔
    我都通过Swift写了项目发布, 不过看贵站的资料还是受益匪浅,非常感谢!

    站长回复

    不客气,我也要谢谢的你提醒。同时也祝贺你项目成功发布。

  • 2楼
    2016-04-11 18:48
    哈喽

    请问航哥,connection是什么?为什么我写的时候报错说没有声明

    站长回复

    Connection是一个自定义类,在这里表示一个数据库连接类。本文主要介绍反初始化的使用,所以Connection类的具体代码就不写出来了。

  • 1楼
    2016-01-25 22:35
    大运王

    楼主您好,看您博客已经好几天了,感觉学到了很多知识。有个地方想请教一下, 我在别处看到有的 Model 里面写了 两个 init()构造方法, 请问写多个 构造方法的作用是什么呢?

    站长回复

    一个类可以定义多个init初始化方法,这样创建类对象的时候就可以根据需求使用不同的初始化方法。
    比如创建一个按钮对象我们可以:let button:UIButton = UIButton(type:.ContactAdd)
    也可以:let button = UIButton(frame:CGRectMake(10, 150, 100, 30))