Swift - 委托(delegate)的介绍,及使用样例
2016-03-16 17:59
281 查看
1,委托的说明
委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象。
比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象B的引用存为一个实例变量。这个对象B称为委托。当事件发生时,它检查委托对象是否实现了与该事件相适应的方法。如果已经实现,则调用该方法。
由于松耦合的原因,一个对象能成为多个对象的委托。某些情况下,相较于通过继承让子类实现相关的处理方法,可以有效减少代码复杂度。所以iOS中也大量的使用了委托。
2,委托的使用样例
下面通过用户登录类,日志记录类来演示委托的用法。(其中日志记录类来充当用户登录类的委托)
委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象。
比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象B的引用存为一个实例变量。这个对象B称为委托。当事件发生时,它检查委托对象是否实现了与该事件相适应的方法。如果已经实现,则调用该方法。
由于松耦合的原因,一个对象能成为多个对象的委托。某些情况下,相较于通过继承让子类实现相关的处理方法,可以有效减少代码复杂度。所以iOS中也大量的使用了委托。
2,委托的使用样例
下面通过用户登录类,日志记录类来演示委托的用法。(其中日志记录类来充当用户登录类的委托)
//定义一个协议 protocol LogManagerDelegate { func writeLog() } //用户登录类 class UserController { var delegate : LogManagerDelegate? func login() { //查看是否有委托,然后调用它 delegate?.writeLog() } } //日志管理类 class SqliteLogManager : LogManagerDelegate { func writeLog() { print("将日志记录到sqlite数据库中") } } //使用 let userController = UserController() userController.login() //不做任何事 let sqliteLogManager = SqliteLogManager() userController.delegate = sqliteLogManager userController.login() //输出“将日志记录到sqlite数据库中”
相关文章推荐
- Swift - 闭包的介绍及用法
- IOS开发系列之Swift_UI_TextFIeld
- Swift - 产生不重复数字的随机数生成器
- Swift - 给图片添加文字水印(图片上写文字,并可设置位置和样式)
- Swift - 使用CGBlendMode改变UIImage颜色
- Swift - final关键字的介绍,以及使用场景
- Swift 学习之二十一:?和 !(详解)
- Swift - 实现单例模式
- Swift - 正则表达式的几种使用方式
- Swift - UISearchController初步学习
- Swift - 设置应用程序图标的提醒个数(右上角小红圈)
- Swift - iOS应用的国际化与本地化
- Swift - 实现发送邮件功能
- 在swift中使用oc文件
- Swift - 实现发送短信的功能
- Swift - 添加、修改、删除通讯录联系人
- 如何使用Instruments诊断App(Swift版)
- Swift - 读取通讯录信息
- Swift开发第五篇——四个知识点(Struct Mutable方法&Tuple&autoclosure&Optional Chain)
- 【游戏客户端开发】 IOS开发——Swift基础篇2