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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,865评论 0 6
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,896评论 1 10
  • 132.转换错误成可选值 通过转换错误成一个可选值,你可以使用 try? 来处理错误。当执行try?表达式时,如果...
    无沣阅读 1,291评论 0 3
  • 构造过程是为了使用某个类、结构体或枚举类型的实例而进行的准备过程。这个过程包含了为实例中的每个属性设置初始值和为其...
    零度_不结冰阅读 263评论 0 0
  • 成长是一个永恒的话题,因为成长一直与我们相伴。 这两天加入了橙子成长联盟,感觉和自己的方向特别的契合,从大学的时候...
    蔚成阅读 685评论 0 0