Swift编程中的初始化与反初始化完全讲解
初始化
类,结构和枚举当Swift声明后准备初始化类实例。初始值被初始化为存储属性,并且新的实例的值也被进一步进行初始化。创建初始化函数的关键字是通过init()方法。Swift初始化不同于Objective-C,它不返回任何值。其作用是检查新创建的实例的其处理前初始化。Swift还提供了“反初始化”过程中执行的内存管理操作当实例被释放。
对于存储的属性初始化器的作用
存储的属性处理实例之前初始化类和结构的实例。存储属性使用初始分配和初始化值,从而消除了需要调用属性观察者。初始化用于存储属性:
创建初始值
要在属性定义中指定默认属性值
为特定的数据类型,初始化实例init()方法被使用,init()函数没有传递参数。
语法
init() { //NewInstanceinitializationgoeshere }
示例
structrectangle{ varlength:Double varbreadth:Double init(){ length=6 breadth=12 } } vararea=rectangle() println("areaofrectangleis\(area.length*area.breadth)")
当我们使用playground运行上面的程序,得到以下结果。
areaofrectangleis72.0
这里结构'rectangle'使用成员长宽高为“double”的数据类型进行初始化。init()方法被用于为新创建的成员的长度和初始化double类型的数值。计算长方形的面积,并通过调用矩形函数返回。
通过默认设置属性值
Swift语言提供init()函数来初始化存储的属性值。此外,用户必须规定默认在声明类或结构的成员初始化属性值。当属性的值在整个程序中时一样时,我们可以在声明部分单独声明它,而不是在init()中初始化。默认情况下,用户设置属性值时能够继承被定义为类或结构。
structrectangle{ varlength=6 varbreadth=12 } vararea=rectangle() println("areaofrectangleis\(area.length*area.breadth)")
当我们使用playground运行上面的程序,得到以下结果。
areaofrectangleis72.0
在这里,代替声明长和宽在init()中,在声明本身时就初始化值了。
参数初始化
在Swfit语言用户提供以初始化参数初始化,使用定义作为init()的一部分。
structRectangle{ varlength:Double varbreadth:Double vararea:Double init(fromLengthlength:Double,fromBreadthbreadth:Double){ self.length=length self.breadth=breadth area=length*breadth } init(fromLengleng:Double,fromBreadbread:Double){ self.length=leng self.breadth=bread area=leng*bread } }
letar=Rectangle(fromLength:6,fromBreadth:12) println("areais:\(ar.area)")
letare=Rectangle(fromLeng:36,fromBread:12) println("areais:\(are.area)")