swift protocol(协议) associatedtype关联类型

定义一个协议时,有的时候声明一个或多个关联类型作为协议定义的一部分将会非常有用。关联类型为协议中的某个类型提供了一个占位名(或者说别名),其代表的实际类型在协议被采纳时才会被指定。你可以通过 associatedtype 关键字来指定关联类型。比如使用协议声明更新cell的方法:

  1. //模型
  2. struct Model {
  3. let age: Int
  4. }
  5. //协议,使用关联类型
  6. protocol TableViewCell {
  7. associatedtype T
  8. func updateCell(_ data: T)
  9. }
  10. //遵守TableViewCell
  11. class MyTableViewCell: UITableViewCell, TableViewCell {
  12. typealias T = Model
  13. func updateCell(_ data: Model) {
  14. // do something ...
  15. }
  16. }

原文地址:https://www.cnblogs.com/ruixin-jia/p/9079449.html

时间: 2024-08-03 09:13:04

swift protocol(协议) associatedtype关联类型的相关文章

associatedtype关联类型

associatedtype关联类型 定义一个协议时,有的时候声明一个或多个关联类型作为协议定义的一部分将会非常有用.关联类型为协议中的某个类型提供了一个占位名(或者说别名),其代表的实际类型在协议被采纳时才会被指定.你可以通过 associatedtype 关键字来指定关联类型.比如使用协议声明更新cell的方法: [objc] view plain copy //模型 struct Model { let age: Int } //协议,使用关联类型 protocol TableViewCe

iOS-Swift协议中关联类型的使用

Associated Type :关联类型 有时候会遇到这样的需求,继承自某一协议的类中需要保证代理方法处理的参数类型保持一致,这就需要使用关联类型来做到这一点 协议声明: protocol ATypeDelegate { associatedtype T func printContent( ct : T) func colum( ct : T) } 协议使用: class ATypeClass: ATypeDelegate { typealias T = Int func printCont

swift开发之--Protocol(协议)

使用object-c语言的同学们肯定对协议都不陌生,但在swift中苹果将protocol这种语法发扬的更加深入和彻底. Swift中的protocol不仅能定义方法还能定义属性,配合extension扩展的使用还能提供一些方法的默认实现,而且不仅类可以遵循协议,现在的枚举和结构体也能遵循协议了. 基于此本文从 : 1,协议中定义属性和方法, 2,协议的继承.聚合.关联类型, 3,协议的扩展, 4,Swift标准库中常见的协议, 5,为什么要使用协议 5个方面结合自身的学习经验简单介绍一下这种"

iOS学习之Swift 关联类型

有时候我认为类型理论是故意弄的很复杂,以及所有的那些函数式编程追随者都只是胡说八道,仿佛他们理解了其中的含义.真的吗?你有一篇5000 字的博客是写关于插入随机类型理论概念的吗?毫无疑问的没有.a)为什么有人会关心这些以及b)通过这个高大上的概念能帮我们解决什么问题?我想把你装进麻布袋里,扔进河里,并且砸进一个坑 里. 我们在讨论什么?当然,关联类型. 当我第一次看到 Swift 范型的实现时, 关联类型的用法的出现,让我感到很奇怪. 在这篇文章,我将通过类型概念和一些实践经验,这几乎都是我用自

Swift中协议的简单介绍

熟悉objective-c语言的同学们肯定对协议都不陌生,在Swift中苹果将 protocol 这种语法发扬的更加深入和彻底.Swift语言中的 protocol 不仅能定义方法还能定义属性,配合 extension 扩展的使用还能提供一些方法的默认实现,而且不仅类可以遵循协议,现在的枚举和结构体也能遵循协议了.基于此本文从 1,协议中定义属性和方法 , 2,协议的继承.聚合.关联类型 , 3,协议的扩展 , 4,Swift标准库中常见的协议 , 5,为什么要使用协议 5个方面结合自身的学习经

Swift学习——A Swift Tour 协议和扩展

Protocols and Extensions Protocols  协议的使用 使用关键字 protocol 定义一个协议 protocol ExampleProtocol { var simpleDescription: String { get } mutating func adjust() } 类,枚举和结构体都可以实现协议 class SimpleClass: ExampleProtocol { var simpleDescription: String = "A very sim

Swift的协议默认实现

继承和组合的缺点 带默认实现的协议 小结 继承和组合的缺点 在开发工作中,继承总是用来在多个类之间共享代码. 设想一个场景,一个人类,可以说话和睡觉,而一个Worker,除了上述功能,还可以工作. 解决方案很简单,我们可以 Person 和 Worker 之间建立继承关系: class Person { func say() { print("hello") } func sleep() { print("I'm sleeping") } } class Worke

iOS开发-Protocol协议及委托代理(Delegate)传值

前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替.Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法.也就是说,它只告诉你要做什么,但具体怎么做,它不关心. 当 一个类要使用某一个Protocol(协议)时,都必须要遵守协议.比如有些必要实现的方法,你没有去实现,那么编译器就会报警告,来提醒你没有遵守×× 协议.注意,我这里说的是警告,而不是错误.对的,就算你不实现那些“必要实现”的方法,程序也是能运行的,只不过多了些警告. 我会

Arc 自动内存管理 分类Category 类扩展 Block 代码段 和 Protocol协议的一些简单知识的总结

1. Arc的使用 Arc是自动内存管理: arc的使用原则 1).只要对象没有任何强类型指针引用就会被释放’. 2).只要对象被任何强类型指针指引就不会被释放. 弱指针:__weak 被__weak修饰的指针就被称为弱型指针: 强类型指针 默认的指针都是强类型指针: 被__strong修饰的指针也是强类型指针. 使用Arc时可以重写dealloc方法,但是在重写方法时不能手动调用[super dealloc]: 在Arc中通过@property生成的属性如果是OC的对象那么要用Strong来修