全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

深入解析Swift代理模式

配置如下:

      Xcode 8.2

      Swift 3.0

在iOS开发中,无论是 Objective-C 还是 Swift ,Delegate 有着具足轻重的位置,如TabelViewDelegate 与 TableViewDataSource。

Swift 中的代理模式 和 Objective-C 除了语法外,几乎一样。

Objective-C 代理模式

在介绍 Swift 代理模式前,先来看回顾一下 Objective-C 中的代理模式如何实现

Objective-C 中用代理实现反向传值:

委托方(子控制器)

委托方需要实现

创建协议 、声明协议方法

 @protocol SubViewDelegate <NSObject>
 
 - (void)backWithStr:(NSString *) str;

 @end

创建一个代理属性

 // weak声明
 @property (nonatomic, weak) id<SubViewDelegate> delegate;

执行协议方法

 // 判断代理是实现该方法,避免carsh
 if ([self.delegate respondsToSelector:@selector(backWithStr:)]) {
 [self.delegate backWithStr:self.textField.text];
 }

代理方(主控制器)

代理方需要实现

遵守(继承)协议

 @interface ViewController () <SubViewDelegate>

将代理设为自己

 subVC.delegate = self;

实现代理方法

 - (void)backWithStr:(NSString *)str {
 self.label.text = str;
 }

Swift 代理模式

Swift 代理模式 与 Objective-C 一样,只是语法不同。

Swift 中用代理实现反向传值:

委托方(子控制器)

创建协议 、声明协议方法

 protocol SubViewDelegate {
 func backStr(str: String)
 } 

创建一个代理属性

 var delegate: SubViewDelegate?

执行协议方法

 /// 执行代理方法,将值回传
 delegate?.backStr(str: textField.text ?? "")

代理方(主控制器)

继承协议

 class ViewController: UIViewController, SubViewDelegate

将代理设为自己

 subVC.delegate = self

实现代理方法

 func backStr(str: String) {
  self.textF.text = str
 }

总结

对比可以方法 Swift 代理模式 与 Objective-C 用法完全相同,只是语法发生了变化。

值得一提的是Swift 的扩展 extension可以用来继承协议,实现代码隔离,便于维护。

/// 使用扩展继承协议 实现协议方法 可以分离代码
extension ViewController: SubViewDelegate{
 /// 实现代理方法
 func backStr(str: String) {
  self.textF.text = str
 }
}

最后附上Demo源码

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# swift  # 代理  # swift3  # swift3.0  # Swift 5.1 之类型转换与模式匹配的教程详解  # 深入讲解Swift中的模式匹配  # 深入理解Swift中单例模式的替换及Swift 3.0单例模式的实现  # swift where与匹配模式的实例详解  # IOS Swift3 四种单例模式详解及实例  # 仓库模式及其在Swift 项目中的应用详解  # 设为  # 创建一个  # 的是  # 好了  # 这篇文章  # 谢谢大家  # 一提  # 如何实现  # 可以用来  # 完全相同  # 回传  # 具足  # 发生了  # 有疑问  # lt  # text  # center  # TabelViewDelegate  # TableViewDataSource  # align 


相关文章: 深圳网站制作培训,深圳哪些招聘网站比较好?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何通过网站建站时间优化SEO与用户体验?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  建站主机CVM配置优化、SEO策略与性能提升指南  如何登录建站主机?访问步骤全解析  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  如何挑选优质建站一级代理提升网站排名?  建站之星如何配置系统实现高效建站?  建站之星会员如何解锁更多建站功能?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何获取PHP WAP自助建站系统源码?  招贴海报怎么做,什么是海报招贴?  英语简历制作免费网站推荐,如何将简历翻译成英文?  已有域名和空间,如何快速搭建网站?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  焦点电影公司作品,电影焦点结局是什么?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  如何选择高效可靠的多用户建站源码资源?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  如何快速生成ASP一键建站模板并优化安全性?  如何彻底删除建站之星生成的Banner?  在线制作视频的网站有哪些,电脑如何制作视频短片?  淘宝制作网站有哪些,淘宝网官网主页?  制作销售网站教学视频,销售网站有哪些?  南京网站制作费用,南京远驱官方网站?  建站之星导航菜单设置与功能模块配置全攻略  重庆市网站制作公司,重庆招聘网站哪个好?  jQuery 常见小例汇总  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  山东云建站价格为何差异显著?  黑客入侵网站服务器的常见手法有哪些?  如何选择高效稳定的ISP建站解决方案?  官网网站制作腾讯审核要多久,联想路由器newifi官网  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  北京的网站制作公司有哪些,哪个视频网站最好?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  西安大型网站制作公司,西安招聘网站最好的是哪个?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何通过虚拟主机空间快速建站?  定制建站是什么?如何实现个性化需求?  如何解决ASP生成WAP建站中文乱码问题?  建站之星伪静态规则如何正确配置?  如何选择建站程序?包含哪些必备功能与类型?  三星网站视频制作教程下载,三星w23网页如何全屏?  潮流网站制作头像软件下载,适合母子的网名有哪些?  建站之星如何助力网站排名飙升?揭秘高效技巧 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。