文件名称:
Swift面向协议编程技术细节与工程演练.pdf
开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2019-10-31
详细说明:Swift 面向协议编程技术细节与工程演练 陈刚 GMTC 移动技术大会上的分享面向协议编程之前的协议
GMTC全球移动技术大会
·OC&SWt2.0版本之前,协议是没有实现的
,协议的用法大致就是: delegate
datasource
比如最常用的“点赞”功能,在ce放置按
钮,覆盖ce的用户响应、保留按钮的用户
响应
用户点击按钮后需要修改数据源的状态。
聚焦前沿技术传递实践经验
主办方 Geekbang>.nfoQ
极客邦科技
面向协议编程之前的协议
GMTC全球移动技术大会
按钮的定义在cel的子类中,| BAstion也在定
义在ce‖的子类中,而数据源却在 Contro|er
的子类中。
需要解决的问题是:如何把按钮的点击事件
传递给 Controller的子类。
写一个 delegate协议,请看工程演示
聚焦前沿技术传递实践经验
主办方 Geekbang>.nfoQ
极客邦科技
面向协议编程之前的协议
GMTC全球移动技术大会
让我们来分解一下上面的操作:
1声明一个 Deleage协议,这个协议可能只用到一次
2在ce中定义可选型类型的属性,把1中定义的协议
作为类型使用。
3 Controller子类遵循自定义的 Delegate协议,并定义具
体实现
4在获得每个Ce的实例的时候,指定实例的 delegate
属性为 Controller,实现绑定
聚焦前沿技术传递实践经验
主办方 Geekbang>.nfoQ
极客邦科技
面向协议编程之前的协议
GMTC全球移动技术大会
更加SW化的方案:使用闭包替代协议
请看工程演示。
聚焦前沿技术传递实践经验
主办方 Geekbang>.nfoQ
极客邦科技
面向协议编程之前的协议
GMTC全球移动技术大会
吏用闭包的步骤分解:
1向定义其他类型的属性一样,定义一个闭
包并定义初始值(一般都是空操作)
·2在 controller-子类中为闭包属性重新赋值。
聚焦前沿技术传递实践经验
主办方 Geekbang>.nfoQ
极客邦科技
面向协议编程之前的协议
GMTC全球移动技术大会
在SWft中闭包(当然还有函数和方法)是
级公民”,补充一些闭包的知识。
使用闭包的好处:
1步骤更简单,可读性强
2代码耦合度更高,避免跨越代码,增加无意义的
理解成本
聚焦前沿技术传递实践经验
主办方 Geekbang>.nfoQ
极客邦科技
面向协议编程之前的协议
GMTC全球移动技术大会
使用闭包的注意事项
闭包和类一样,也是引用类型的,会持有内部的对象,所以有“循环引
用″的风险。在示例中使用了“捕获列表”来避免“循环引用〃。不过不需
要太过担心,苹果的官方文档中有说明,闭包只在特定情况下才有出
现“循环引用"的风险。
方法中的闭包参数不会出现“循环引用”的风险。需要注意的是,如果
方法体中有循环调用某个闭包参数的代码,经常在参数列表中为闭包
参数加上 noescape关键字。 noescape的主要目的是避免在循环中不
断引用相同的闭包,提升内存利用率。标准库中 Collection Type协议中
的map、 filter等常用的方法都是基于 noescape的。
聚焦前沿技术传递实践经验
主办方 Geekbang>.nfoQ
极客邦科技
面向协议编程之前的协议
GMTC全球移动技术大会
捕获列表是AP的使用者在使用时添加的,
使用者需要明确“循环引用〃的舳发条件,避
免添加无意义的关键字。
noescape是AP的开发者在定义时加入的,
在使用闭包时}中不会要求加人sef关键字,
AP的使用者可以不用关心 noescape
聚焦前沿技术传递实践经验
主办方 Geekbang>.nfoQ
极客邦科技
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.