欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Swift中protocol的关键字笔记

程序员文章站 2022-03-12 22:06:28
一、mutating mutating 关键字的作用是为了能在该方法中修改 struct 或是 enum 的变量,在类中实现协议方法不用写mutating关键字 protocol ExampleProtocol { var simpleDescription: String { get } muta ......

一、mutating

    mutating 关键字的作用是为了能在该方法中修改 struct 或是 enum 的变量,在类中实现协议方法不用写mutating关键字

protocol exampleprotocol {
    var simpledescription: string { get }
    mutating func adjust()
    mutating func newtest()
}

class simpleclass: exampleprotocol {
    var simpledescription: string = "a very simple class."
    var anotherproperty: int = 69105
    func adjust() {
        simpledescription += "  now 100% adjusted."
    }
    
    func newtest() {
        print("jiacheng - simpleclass -> exampleprotocol -> newtest")
    }
}

    在枚举(enum)和机构体(struct)中遵守协议时,如果在实现方法中改变了自己的变量,则方法的声明和实现都需要加mutating关键字,否则会报错;如果没有改变变量,则不需要加mutating关键字。

Swift中protocol的关键字笔记

二、swift和oc中protocol的差异

    1. oc中的协议只能在类中实现,而swift中的协议既可在类中实现,也可在枚举和机构体中实现;

    2. oc的协议方法有可选关键字,swift没有,因此在swift中想给协议方法添加可选关键字,则必须给protocol添加@obj关键字,声明这是个oc协议;

Swift中protocol的关键字笔记

    3. 枚举和结构体无法实现添加@obj关键字的协议,该协议方法也无法添加mutating关键字。

Swift中protocol的关键字笔记