1.final
使用场景:权限控制,也就是说这个类或方法不希望被继承和重写
final class Book {}
final func method() {}
2typealias:
为此类型声明一个别名.和 typedef类似
typealias TestString = String
let testStr = TestString(format: "%d", 1)
print(testStr)
3.mutating
作用:写在func前面,以便于让func可以修改struct和protocol的extension中的成员的值。 如果func前面不加mutating,struct和protocol的extension中的成员的值便被保护起来,不能修改
mutating func method() {}
4.convenience
用于增加init方法
使用convenience的初始化方法必须调用同一个类中的designated初始化完成设置
使用convenience的初始化方法不能被子类重写或者是从子类中以super的方式被调用
class Book {
var name: String
init(name: String) {
self.name = name
}
}
extension Book {
convenience init(nickName: String) {
self.init(name: nickName)
}
}