美文网首页
关于协议

关于协议

作者: 邢罗康 | 来源:发表于2023-05-04 10:18 被阅读0次



协议(Protocol)

  • AnyObject、class
    Runnable1、Runnable2都是只能被类遵守的协议
protocol Runnable1: AnyObject {}
protocol Runnable2: class {}
  • @objc
    下面定义的协议是被@objc修饰的协议,可以暴露给OC去遵守实现
@objc protocol Runnable {}
  • @objc optional
    可以通过@objc optional定义可选协议,这种协议只能被类遵守,如下:
@objc protocol Runnable {
    func run1()
    @objc optional func run2()
    func run3()
}

class Dog: Runnable {
    func run3() { print("Dog run3") }
    func run1() { print("Dog run1") }
}

var d = Dog()
d.run1() // Dog run1
d.run3() // Dog run3
  • @objc dynamic
    @objc dynamic修饰的内容会具有动态性,比如调用方法会走Runtime那一套流程
class Dog: NSObject {
    @objc dynamic func test1() {}
    func test2() {}
}

var d = Dog()
d.test1() // test1走的是objc_msgSend
d.test2() // test2走的是Swift虚表那一套



  • 总结
    • ① 以前我们说过,可以给协议添加扩展,在扩展里面提供协议的默认实现,这样间接实现可选协议的效果。
    • ② 可以通过@objc optional定义可选协议,这种协议只能被类遵守,可以暴露给OC去遵守实现。



【从OC到Swift】



相关文章

  • YKWebViewJavascriptBridge设计总结

    目录 前沿 YKWebViewJavascriptBridge关于『自定义文本协议』关于『协议传输』关于 YKNa...

  • TCP/IP协议

    一、关于TCP/IP TCP/IP协议是一个协议集合,HTTP协议,IP协议,TCP协议,DNS协议等都属于TCP...

  • HTTP/1.1协议知识小结

    1.关于HTTP协议 ​ HTTP协议(HyperText Transfer Protocol)及超...

  • 人生不得已——Python爬虫 robots协议

    关于robots协议 Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots ...

  • 2018-12-15\网络与IP&node js服务器

    HTTP与TCP 协议 HTTP 协议的底层其实是由 TCP 协议和 IP 协议(简称 TCP/IP)构建的。关于...

  • 关于HTTP协议

    关于HTTP协议 HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输...

  • 关于爬虫

    关于爬虫 HTTP 协议 HTTP(Hypertext Transfer Protocol)是应用级协议,它适应了...

  • 关于http协议

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写; H...

  • 关于WebSocket协议

    最近身边很多朋友叨唠一个新的协议叫做WebSocket,乍听起来,第一时间是困扰的,像socket这么底层的技术(...

  • 关于 HTTP 协议

    HTTP 协议广泛用在客户端浏览器和服务器之间进行传输数据。它是一种基于 TCP 连接的一个无状态的应用层协议。H...

网友评论

      本文标题:关于协议

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