美文网首页swift
Swift 中的协议

Swift 中的协议

作者: 乐人曹 | 来源:发表于2014-08-24 21:01 被阅读0次

实例属性,实例方法,类方法,运算符,下标

语法

protocol SomeProtocol {
    // protocol definition goes here
}

struct SomeStructure: FirstProtocol, AnotherProtocol {
    // structure definition goes here
}

class SomeClass: SomeSuperclass, FirstProtocol, AnotherProtocol {
    // class definition goes here
}

属性

指定属性的 名字类型,以及 getterable or setterable

protocol SomeProtocol {
    var mustBeSettable: Int { get set }
    var doesNotNeedToBeSettable: Int { get }
}

protocol AnotherProtocol {
    class var someTypeProperty: Int { get set }
}

当一个属性被指定成 getterable 时,实现中可以成为 setterable
类属性用 class 表征,不管实现时,是结构还是类。

方法

和正常的方法定义一样(除了不能设置默认参数值)。

如果一个方法有 mutating 标记,实现时,类无须再添加该标记,结构和枚举依旧需要标记。

初始化器

协议中,和正常的初始化器定义一样。

类实现中,需要添加 require 标记。(如果该类被标记成 final,那 require 标记不需要)

Class-Only

protocol SomeClassOnlyProtocol: class, SomeInheritedProtocol {
    // class-only protocol definition goes here
}

协议组合

protocol<SomeProtocol, AnotherProtocol>

协议类型检查

@objc protocol HasArea {
  // do what you like
}

要想通过 is/as 来检查协议类型,必须给协议添加 @objc 标记(为了将这个协议暴露给 Objective-C 代码)。
另外,这样的协议只能用类来实现,而不能用结构和枚举。

可选需求

通过 optional 标记可选实现。
但要注意,也需要给协议标记 @objc

相关文章

  • Swift及SwiftUI学习笔记

    持续更新中...... swift官方文档 swift官方文档(英文) 协议 swift主要基于协议编程的,所以协...

  • Swift 命名空间形式扩展的理解和问题探讨

    先从 Swift 协议扩展的语法说起 注:协议扩展 Protocol extension: Swift 1.x 中...

  • Swift学习笔记-协议

    Swift中的协议类似于Java中的接口,不过在Swift中,结构体,枚举,类都能使用协议 基本用法 符合多个协议...

  • Swift - 协议(protocol)

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

  • 协议(三)

    标准库中的协议 Swift标准库广泛使用的协议可能会让你感到惊讶。理解协议在Swift中扮演的角色可以帮助您编写干...

  • Swift语言总结

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

  • 【Tips】Swift Protocol

    前言 本文是笔者学习Swift协议的笔记。 开始 OC中判断是否遵守某个协议有对应的方法,Swift中也有,但是开...

  • swift方法参数遵守多继承和遵守多个协议

    参数继承协议 OC中 id Swift 3 protocol Swift 4 A & B 文档

  • OC和Swift比较

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

  • Swift 5.1 (20) - 协议

    Swift 5.1 (20) - 协议Swift 5.1 (20) - 协议

网友评论

    本文标题:Swift 中的协议

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