1,委托的说明

委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象。

比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象B的引用存为一个实例变量。这个对象B称为委托。当事件发生时,它检查委托对象是否实现了与该事件相适应的方法。如果已经实现,则调用该方法。

由于松耦合的原因,一个对象能成为多个对象的委托。某些情况下,相较于通过继承让子类实现相关的处理方法,可以有效减少代码复杂度。所以iOS中也大量的使用了委托。

2,委托的使用样例
下面通过用户登录类,日志记录类来演示委托的用法。(其中日志记录类来充当用户登录类的委托)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//定义一个协议
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数据库中”

最新文章

  1. ios-深度解析二维码的生成与使用
  2. (实用篇)php中计算中文字符串长度、截取中文字符串的函数代码
  3. unity, 读写xls
  4. ios 画圆环进度条
  5. NOIP 2015提高组复赛
  6. 我写的一个 Qt 显示图片的控件
  7. CSS属性合写
  8. HDU5734 Acperience(数学推导)
  9. 201521123102 《Java程序设计》第8周学习总结
  10. CPP--正码,反码,补码~附整数溢出的探讨
  11. cdh 安装调研
  12. 图标框架Font Awesome
  13. IPC介绍——10个ipcs例子
  14. Ant多渠道批量打包
  15. 网络中的A、B、C类地址
  16. 在盒子(2CCC)的日子
  17. Web知识简易介绍及HTTP知识总结
  18. java并发-同步容器类
  19. heartbeat测试
  20. EasyDSS+EasyNVR实现幼儿园直播/工地直播等分权限观看直播视频的功能

热门文章

  1. 免费的HTML5连载来了《HTML5网页开发实例具体解释》连载(六)媒体查询
  2. 【Tomcat】本地域名访问设置
  3. [Swust OJ 138]--文件压缩
  4. ubuntu中出现警告:Gtk-WARNING**: 无法在模块路径中找到主题引擎:“pixmap”
  5. 一致性算法--Paxos
  6. Java学习笔记:内部类/匿名内部类的全面介绍
  7. UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
  8. 设计模式(七)组合模式Composite(结构型)
  9. JavaScript的实现
  10. SimpleAdapter