Skip to Main Content
iOS 编程基础:Swift、Xcode 和Cocoa 入门指南
book

iOS 编程基础:Swift、Xcode 和Cocoa 入门指南

by Matt Neuburg
January 2017
Intermediate to advanced content levelIntermediate to advanced
552 pages
9h 43m
Chinese
China Machine Press
Content preview from iOS 编程基础:Swift、Xcode 和Cocoa 入门指南
对象类型
151
可以在类声明前加上关键字
final
防止类被继承,也可以在类成员声明前加上关键字
final
防止它被子类重写。
4.4.3
类初始化器
类实例的初始化要比结构体或枚举实例的初始化复杂得多,这是因为类存在继承。初始
化器的主要工作是确保所有属性都有初值,这样当实例创建出来后其格式就是良好的;
初始化器还可以做一些对于实例的初始状态与完整性来说是必不可少的工作。不过,类
可能会有父类,也有可能拥有自己的属性与初始化器。这样,除了初始化子类自身的属
性并执行初始化器任务,我们必须要确保在初始化子类时,父类的属性也被初始化了,
并且初始化器会按照良好的顺序执行。
Swift
以一种一致、可靠且巧妙的方式解决了这个问题,它强制施加了一些清晰且定义良
好的规则,用于指导类初始化器要做的事情。
1.
类初始化器分类
这些规则首先对类可以拥有的初始化器种类进行了区分:
隐式初始化器
类没有存储属性,或是存储属性都作为声明的一部分进行初始化,没有显式初始化器,
有一个隐式初始化器
init()
指定初始化器
在默认情况下,类初始化器是个指定初始化器。如果类中有存储属性没有在声明中
完成初始化,那么这个类至少要有一个指定初始化器,当类被实例化时,一定会有
一个指定初始化器被调用,并且要确保所有存储属性都被初始化。指定初始化器不
可以委托给相同类的其他初始化器;指定初始化器不能使用
self.init(...)
便捷初始化器
便捷初始化器使用关键字
convenience
标记。它是个委托初始化器,必须调用
self.init(...) ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

Aurélien Géron
Swift 人工智能实战:从基础理论到AI 驱动的应用程序开发

Swift 人工智能实战:从基础理论到AI 驱动的应用程序开发

Mars Geldard, Jonathon Manning, Paris Buttfield-Addison, Tim Nugent

Publisher Resources

ISBN: 9787111556350