美文网首页
代理和委托回调

代理和委托回调

作者: theDeskmateOfSb | 来源:发表于2016-08-19 16:01 被阅读0次

代理和委托回调

模拟一个学生找枪手代考的用代理
代理给我感觉像是 代理方和被代理方通过遵循同一个协议,以这个为桥梁,代理方有一个被代理方类的属性,通过这个属性可以把代理方和被代理方实现连接

protocol ExamCandidate: class {
    
    func answerTheQuestion()
}

class LazyStudent: ExamCandidate {
    var name: String
    
    init(name: String) {
        self.name = name
    }
    
    func answerTheQuestion() {
    }
}

class Gunman: ExamCandidate {
    var name: String
    //建立一个被代理方的属性
    var target: LazyStudent?
    
    init(name: String) {
        self.name = name
    }
    
    func answerTheQuestion() {
    //意思是如果这里有一个LazyStudent的对象才执行下面这些代码
    //也就是说他本身是无法单独执行这个方法的
        if let stu = target {
            print("姓名: \(stu.name)")
            print("奋笔疾书答案")
            print("提交试卷")
        }
    }
}

let stu = LazyStudent(name: "王大锤")
let gun = Gunman(name: "骆昊")
gun.target = stu

gun.answerTheQuestion()

委托回调
委托方没有实行写答案的方法 方法由被委托方执行,相当于是
协议里面有方法但没执行-->被委托方(执行协议里面的方法)
||
委托方(有一个遵从协议的属性)
||
委托方通过属性调用协议里面的方法实现自己想做的事

protocol ExamDelegate: class {
    
    func answerTheQuestion()
}

class LazyStudent {
    var name: String
    weak var delegate: ExamDelegate?
    
    init(name: String) {
        self.name = name
    }
    
    func joinExam() {
        print("姓名: \(name)")
        delegate?.answerTheQuestion()
    }
}

class Gunman: ExamDelegate {
    
    func answerTheQuestion() {
        print("奋笔疾书各种答案")
    }
}

let stu = LazyStudent(name: "王大锤")
let gun = Gunman()
stu.delegate = gun
stu.joinExam()


相关文章

  • 第一阶段测评试题

    代理法: 委托回调法:

  • 代理和委托回调

    代理和委托回调 模拟一个学生找枪手代考的用代理代理给我感觉像是 代理方和被代理方通过遵循同一个协议,以这个为桥梁,...

  • 代理与委托回调

    代理模式讲解 委托回调模式讲解 字符串中各个数字或字母的获取

  • OC之NSURLSessionDelegate

    NSURLSession 的 task 是异步回调的,所有的回调都是在委托代理里面处理, 苹果为我们提供了 NSU...

  • 说说cglib动态代理

    前言 jdk中的动态代理通过反射类Proxy和InvocationHandler回调接口实现,要求委托类必须实现一...

  • delegate - 代理基础- 02

    delegate-代理基础01 是什么? 协议代理的传值委托方 通过协议里含有参数的方法,将值传递到代理方。 回调...

  • 浅谈委托回调与代理模式

    委托回调 一个对象想做某件事情但是自身没有能力做这件事情就可以使用委托回调,具体的步骤是: 设计一个协议,让被委托...

  • 委托回调

  • 深入理解回调 CallBack

    相信大家都知道委托和事件,没错,委托和事件是用来传递和保存函数用的,那么 回调 呢,近段时间的学习中经常碰到 回调...

  • 利用对象类型闭包和NSMapTable实现多播闭包

    首先普及一个概念,就是多播代理,或者叫多播委托我们知道swift回调有代理、通知、kvo和闭包项目中多对多一般就用...

网友评论

      本文标题:代理和委托回调

      本文链接:https://www.haomeiwen.com/subject/ppmbsttx.html