美文网首页
Swift 方法协议

Swift 方法协议

作者: Cz1024 | 来源:发表于2017-08-14 20:48 被阅读1次

方法协议

作用:让一个类/结构体/枚举的方法,分解为更小的组合,从而更具有灵活性

1. 类型方法协议,前面加上static修饰
protocol AProtocol {
    static func aFun()
}

//class A:AProtocol {
//    static func aFun() {
//        
//    }
//}


class A:AProtocol {
    class func aFun() {
        print("AProtocol");
    }
}

class B:A {
    
}

B.aFun() //B直接调用

//类型协议,为了让子类继承父类的方法 ,可以将实现方法 static 修饰改为class修饰

2.实例方法协议
//有一个产生随机数的协议
protocol RandomOpertable {
    func makeRandomInt() -> Int
}

struct MakeRandomInt:RandomOpertable {
    func makeRandomInt() -> Int {
        return Int(arc4random())
    }
}

let random1 = MakeRandomInt()
random1.makeRandomInt()

//如果此时,产生随机数的要求变了,现在要求产生的随机数在1-6之间,那么为了不修改原来写的大量的代码,只要我们再重新定义一个结构,修改实现协议方法

struct MakeRandomIntMaxSix:RandomOpertable {
    func makeRandomInt() -> Int {
        return Int(arc4random())%6 + 1
    }
}

let random2 = MakeRandomIntMaxSix()

random2.makeRandomInt()

.......

//枚举 如果修改自己类型属性的值,需要mutating修饰
protocol Switchable {
    mutating func OnOff()
}

enum MySwitch:Switchable {
    case on,off
    mutating func OnOff() {
        switch self {  //self指修改自己的值
        case .off:
            self = .on
        default:
            self = .off
        }
    }
}

var mySwitch = MySwitch.off

mySwitch.OnOff()

print(mySwitch)

相关文章

  • Swift 协议代理

    Swift 实现可选协议方法

  • 使用协议方法加载XIB

    面向协议的方法 创建协议 NibLoadProtocol.swift 遵守协议 使用

  • Swift - 协议(protocol)

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

  • Swift-面向协议编程

    Swift协议里的方法可以实现 OC只能声明方法所以Swift才能实现面向协议编程 需要这个功能的,只需要遵守这...

  • UITableview 设置组圆角,以及最后或首行去线处理

    效果 调用方法 操作 让cell 遵循协议,并重写协议方法 新建文件CellLocationState.swift...

  • Swift语言总结

    Swift学习总结 协议 协议是方法的集合,它可以把看似不想关的对象的公共行为放到一个协议中。协议在Swift开发...

  • protocol

    Swift protocol 案例1 案例2 协议里面没有定义方法 案例3 协议里面定义了方法 协议的PWT存储位...

  • OC和Swift比较

    OC与swift 1.协议 OC:主要用来传值 swift:不仅可以用来传值,swift中的协议可以定义属性方法,...

  • OC和JS交互(一):协议拦截

    协议拦截 通俗点理解,就是定义好一个协议,JS使用该协议来调用OC/Swift的方法,并且传值给OC/Swift。...

  • iOS - Swift 面向协议编程(一)

    OC无法做到面向协议开发,而Swift可以,因为Swift可以做到协议方法的具体实现,而OC不行 面向对象开发 传...

网友评论

      本文标题:Swift 方法协议

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