安能取熊掌而舍鱼? 便捷初始化器语法

安能取熊掌而舍鱼? 便捷初始化器语法

今天听到坐在我旁边的 Ray 提到便捷初始化语法,我惊了,事实上我完全不知道那是什麽,我知道初始化,但是...

既然有 init,为何还要有 convenience init ?

指定的初始化程序是创建类型的新实例的默认方法。还有其他一些被称为便捷初始化器,可以帮助您更轻松地完成常见任务,但是这些是您指定的初始化器的补充,而不是替代的。

苹果官方对於 Designated Initializer 和 Convenience Initializer 提出了三条规则。

Designated Initializer 可以呼叫它父类别的 Designated Initializer。

Rule 1
A designated initializer must call a designated initializer from its immediate >superclass.

Convenience Initializer 可以呼叫其它 Convenience Initializer 。

Rule 2
A convenience initializer must call another initializer from the same class.

Convenience Initializer 最终必须呼叫 Designated Initializer。

Rule 3

A convenience initializer must ultimately call a designated initializer.

在写程序中,初始化 (Initializer) 是我们最不可避免的函式,我们往往会写了一堆函式来初始化物件,但为了重复利用,所以我们常常会呼叫最基本的初始化函式,来节省我们开发的时间。但在 Swift 中,将初始化分为 Designated Initializer 和 Convenience Initializer,使用方法如何呢?让我们直接来实际看例子来做一个简单的教学。

来源:https://www.inote.tw/swift-designated-convenience-initializer

init(){}
    
    convenience init(_ loadingVC:UIViewController){
        self.init()
        loadingDelegate = loadingVC
    }

这是个很经典的便捷初始化器


<<:  10大安全软件爆漏洞

>>:  Day 27 - Pwn 0x1

WordPress 点击图片放大效果-Easy FancyBox 外挂教学

当我们在部落格上写文章贴图片的时候,有些图片本身解析度就比较大,例如一张 4000 x 3000 大...

[Day27]jsES6语法-解构(下)

我们也可以把解构方法用在物件里面,把 family 的值传到 Min ,并且用 Leo 的名称来代替...

[Day 1] Google Data Analytics Professional Certificate 介绍

《30天带你上完 Google Data Analytics Certificate 课程》系列将...

不只懂 Vue 语法:请示范如何使用 Vue 3 的 teleport?

问题回答 teleport 是 Vue 3 新增功能。teleport 就像是多啦A梦的「随意门」一...

【第六天 - Bubble Sort 介绍】

Q1. Bubble Sort 是什麽? 一种排序方式,bubble sort 是透过两两相比,将正...