美文网首页
15.协议的使用

15.协议的使用

作者: xiaoyouPrince | 来源:发表于2017-05-17 14:09 被阅读17次

协议的格式

  • 协议的定义方式与类,结构体,枚举的定义都非常相似
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("人在打篮球")
    }
}

相关文章

  • 15.协议的使用

    协议的格式 协议的定义方式与类,结构体,枚举的定义都非常相似 遵守协议的格式 协议的基本使用 定义协议和遵守协议 ...

  • HTTP网络协议(学习笔记五)

    HTTP网络协议(五) 15~18课 15.状态码_form提交 状态码(Status Code) -状态码指示H...

  • 15.协议和分类

    1、通过委托与数据源协议进行对象间通信 委托模式为对象提供了一套接口,使其可由此将相关事件告知其他对象。将委托对象...

  • Explain

    15.看懂explain EXTRA:Using index condition 使用索引作为条件...

  • swift 12.2 协议分类、代理

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

  • 使用javaMail对接邮箱遇到的问题

    1.协议问题,收取邮件使用pop3协议和imap协议;pop3协议不支持使用筛选条件searchTerm,可以使用...

  • 15.使用标签

    标签是对于不同版本的包的一种描述,是对semver的一种补充。为了提高可读性,标签使发布者的包的分类变得更加准确。...

  • 使用协议方法加载XIB

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

  • vue-loader

    Vue-loader在15.*之后的版本都需要配合 VueLoaderPlugin一起使用:const VueLo...

  • [iOS开发] swift 判断delegate是否实现了协议方

    协议: class实现: 重点: 1 协议使用@objc修饰符2 协议方法使用@objc optional修饰3 ...

网友评论

      本文标题:15.协议的使用

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