zoukankan      html  css  js  c++  java
  • Swift

    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数据库中”
  • 相关阅读:
    Linux 修改最大线程数
    Openresty+Nginx+Lua+Nginx_http_upstream_check_module 搭建
    SSDB 性能测试
    面向对象:类的成员
    封装,多态,类的约束,super()深入了解
    面向对象:继承
    面向对象:类的空间问题,类之间关系
    面向对象初识
    软件开发规范
    模块(四)包和logging日志
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4844232.html
Copyright © 2011-2022 走看看