闽公网安备 35020302035485号
对于类来说,如果所有属性都有默认值,那么它会自动生成一个默认的初始化方法。而结构体不管属性有没有默认值都会自动生成一个成员逐一初始化方法。
struct SPoint {
var x: Int
var y: Int
init(x: Int, y: Int) {
self.x = x
self.y = y
}
init(x: Int) {
self.x = x
self.y = 0
}
}
class CPoint {
var x: Int
var y: Int
init(x: Int, y: Int) {
self.x = x
self.y = y
}
init(x: Int) {
self.x = x
self.y = 0
}
}
5. 讲讲 swift 中的 convenience 关键字?convenience init() {
// Initialization code here
}
convenience 关键字声明的初始化方法是为了可以提供更方便的初始化方式,而不需要重复编写初始化逻辑。struct SPoint {
var x: Int
var y: Int
init() {
self.init(x: 0, y: 0)
}
init(x: Int, y: Int) {
self.x = x
self.y = y
}
}
7. 什么是两阶段初始化?let number = Int("a") // nil
9. required 修饰符有什么用?class Animal {
var name: String
var age: Int = 0
required init(name: String) {
self.name = name
}
}
class Dog: Animal {
required init(name: String) {
super.init(name: name)
}
convenience init(name: String, age: Int) {
self.init(name: name)
self.age = age
}
}
以上就是我对这些面试题的理解,可能有不对的地方,大家也可以和我共同探讨。