pot*_*ato 4 initialization swift
这是Apple Swift文档的副本:
只要超类的所有属性都具有初始值,就会认为其内存已完全初始化,并且第1阶段已完成.
超类的指定初始化程序现在有机会进一步自定义实例(尽管它没有).
一旦超类的指定初始化程序完成,子类的指定初始化程序就可以执行额外的自定义(尽管它也不需要).
所以基本上第1阶段确保所有属性都有一个值并将值赋给它们.在阶段2中,这些属性进一步定制.而这种进一步的定制确实让我感到沮丧,因为我无法想到使用进一步定制的单个例子.您能给我一个简单的初始化行为示例,或者提供第1阶段和第2阶段的其他说明吗?谢谢
Ian*_*Ian 10
给定2个类Foo和Bar,其中Bar是Foo的子类:
class Foo {
var a: Int?
var b: Int?
init() {
a = 1
}
}
class Bar: Foo {
var c: Int?
override init() {
super.init() // Phase 1
// Phase 2: Additional customizations
b = 2
c = 3
}
}
Run Code Online (Sandbox Code Playgroud)
当你调用Bar()它时super.init(),第一行是初始化超类Foo的调用.因此,一旦完全初始化Foo的属性,就可以在Foo的初始化程序中设置它们.这由a = 1Foo初始化器中的表示.
一旦完成,阶段2开始,继续super.init()行后的Bar的初始化.您可以在bar或其超类的实例上"执行其他自定义".这由b = 2和表示c = 3.
let x = Bar()
x.a // 1
x.b // 2
x.c // 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1055 次 |
| 最近记录: |