swift构造过程总结(一):默认构造器

swift构造过程总结系列是通过阅读swift官方文档后自己的一些总结。阅读过官方文档的同学都知道,在swift构造过程(Initialization)这一章节苹果用了很长的篇幅来介绍,虽然看起来很费劲,但其重要性也不言而喻。我会尽量使用通俗易懂的语言再加上简单的例子表达!

本系列主要包括默认构造器、构造器的代理、构造器的继承、可失败构造器等,本篇主要讲默认构造器。话不多说,let's begin!

构造过程的定义

构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体包括设置实例中每个存储型属性的初始值和执行其他必须的设置或初始化工作。

默认构造器

  1. 当没有自定义构造器时,如果是class,系统会自动生成一个不带参数的默认构造器(“不带参数”意味着里面的成员变量必须有默认值),如果是struct,系统会生成一个逐一成员变量的构造器
class Dog {
    var numOfLegs:Int!
}
let dog = Dog()
struct Dog {
    var numOfLegs:Int
}
let dog = Dog(numOfLegs: 4)

如上面例子所示,class 类型的成员变量numOfLegs 必须是可选类型(Optional Type)而struct 类型的却不必,原因便在于系统为这两者生成的默认构造器不一样!

  1. 当存在自定义构造器时,系统便不会为你生成默认构造器,你只能使用自定义的构造器
class Dog {
    var numOfLegs:Int!
    init(legs:Int) {
        numOfLegs = legs
    }
}
let dog = Dog(legs: 4)
struct Dog {
    var numOfLegs:Int = 4
    init() {
    }
}
let dog = Dog()

如上所示,我们自己定义了一个构造器,在生成实例时就只能用自定义的而不能使用默认构造器!

你可能感兴趣的:(swift构造过程总结(一):默认构造器)