您好,欢迎光临本网站![请登录][注册会员]  
文件名称: Swift面向协议编程技术细节与工程演练.pdf
  所属分类: iOS
  开发工具:
  文件大小: 1mb
  下载次数: 0
  上传时间: 2019-10-31
  提 供 者: wuton*****
 详细说明: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最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 输入关键字,在本站1000多万海量源码库中尽情搜索: