swift最新语法总结(协议)

2019-03-25  本文已影响0人  coder_xiang

协议的格式

协议的定义方式与类,结构体,枚举的定义都非常相似

protocol SomeProtocol {
    // 协议方法
}

遵守协议的格式

class SomeClass: SomeSuperClass, FirstProtocol,   AnotherProtocol {
    // 类的内容
    // 实现协议中的方法
}

协议的基本使用

定义协议和遵守协议

// 1.定义协议
protocol SportProtocol {
    func playBasketball()
    func playFootball()
}
// 2.遵守协议
// 注意:默认情况下在swift中所有的协议方法都是必须实现的,如果不实现,则编译器会报错
class Person : SportProtocol {
    var name : String?
    var age : Int = 0

    // 实现协议中的方法
    func playBasketball() {
        print("人在打篮球")
    }

    func playFootball() {
        print("人在踢足球")
    }
}

协议之间的继承

protocol CrazySportProtocol {
    func jumping()
}

protocol SportProtocol : CrazySportProtocol {
    func playBasketball()
    func playFootball()
}

代理设计模式

协议继承用于代理设计模式

protocol BuyTicketProtocol {
    func buyTicket()
}

class Person {
    // 1.定义协议属性
    var delegate : BuyTicketProtocol

    // 2.自定义构造函数
    init (delegate : BuyTicketProtocol) {
        self.delegate = delegate
    }

    // 3.行为
    func goToBeijing() {
        delegate.buyTicket()
    }
}


class HuangNiu: BuyTicketProtocol {
    func buyTicket() {
        print("买了一张火车票")
    }
}

let p = Person(delegate: HuangNiu())
p.goToBeijing()

协议中方法的可选

// 1.定义协议
@objc
protocol SportProtocol {
    func playBasketball()

    optional func playFootball()
}

// 2.遵守协议
class Person : SportProtocol {
    var name : String?
    var age : Int = 0

    // 实现协议中的方法
    @objc func playBasketball() {
        print("人在打篮球")
    }
}
上一篇下一篇

猜你喜欢

热点阅读