美文网首页
swift 中协议中的方法用mutating声明的用处

swift 中协议中的方法用mutating声明的用处

作者: 90后的晨仔 | 来源:发表于2021-03-28 13:22 被阅读0次

Swift 的 protocol可以被classstructenum实现。所以在方法前边添加 mutating来修饰的话是为了能在该方法中修改 structenum的变量,若没有加这个关键字的话别人用structenum来实现就不能改变变量了。

  • 声明一个协议,用mutating来修饰。
protocol JCTestProtocol
{
    var numberOfWheels: Int {get}
    var testColor: UIColor { get set}
    var testName: String   { get }
    
    mutating  func changeColor()
}
  • 在struct中使用
struct JCMyHeade: JCTestProtocol {
    
    let numberOfWheels: Int = 4
    var testColor: UIColor = UIColor.red
    var testName: String = "码农晨仔"
    mutating func changeColor() {
        testColor = .yellow
    }
}

  • 在Class中使用

class JCMyBody: JCTestProtocol {
    var numberOfWheels: Int = 3
    var testColor: UIColor = UIColor.blue
    var testName: String {
        
        get {
            return  "码农晨仔"
        }
        
        
    }
    
    
    func changeColor() {
        testColor = .black
    }
    
}

  • 在enum中使用

enum JCMyFooter: JCTestProtocol {
    
    
    var testColor: UIColor {
        get {
            return .black
        }
        
        set {
            
        }
    }
    

    var numberOfWheels: Int {
        get {
            
            return 10
        }
    }
    var testName: String {
        
        get {
            return "码农晨仔"
        }
        
    }
    
    mutating func changeColor() {
        self.testColor = UIColor.gray
    }
    
}

  • 可选协议使用 @objc关键字来实现

//可选的协议属性或者方法
//'optional' can only be applied to members of an @objc protocol
@objc protocol JCTestTwoProtocol {
  @objc  optional var heade: String { get set}
  @objc  optional func getHeadeNmae()
}

相关文章

  • swift 中协议中的方法用mutating声明的用处

    Swift 的 protocol可以被class、struct、enum实现。所以在方法前边添加 mutatin...

  • 《Swifter Tips》 读书笔记(1)

    1.要习惯将protocol的一些方法声明为mutating,因为swift中的协议不仅可以用在class,str...

  • swift 12.2 协议分类、代理

    1协议分类 1.协议中定义的方法使用mutating修饰 类遵守协议 实现协议中使用mutating修饰的方法的...

  • swift之mutating关键字

    部分参考:swift之mutating关键字 swift中在structures和enumerations的方法中...

  • swift中的协议

    static、class 协议中的类型方法、类型属性必须使用static定义 mutating 协议中的方法前加了...

  • Swift - 协议(protocol)

    Swift - 协议(protocol) 1、Swift中协议类似于别的语言里的接口,协议里只做方法的声明,包括方...

  • Swift3.0-协议和扩展

    用protocol 去声明协议。 一般情况下,值类型的实例方法不能修改它的属性。mutating(变异)加在方法前...

  • Swift小点(1)

    protocol protocol 的方法声明为mutating,是为了防止struct 或者 enum 实现协议...

  • 协议(protocol)

    协议语法 遵守协议的格式 属性要求 例子 协议中定义类型属性 例子 方法要求 例子 Mutating方法要求 例子...

  • (实验)Swift 面向协议

    协议 swift中协议中可以声明属性,静态属性,方法,静态方案 子类如果继承了协议而不去实现其中的内容,编译就会通...

网友评论

      本文标题:swift 中协议中的方法用mutating声明的用处

      本文链接:https://www.haomeiwen.com/subject/zfephltx.html