美文网首页
代理模式

代理模式

作者: 小DB | 来源:发表于2017-09-03 00:52 被阅读0次

代理模式是什么?

代理模式是一种常用的设计模式,提供了一种消息传递的方式,还可以传递参数。

代理模式的原理?

在iOS中代理的本质就是代理对象内存的传递和操作,我们在委托类设置代理对象后,实际上只是用一个id类型的指针将代理对象进行了一个弱引用。委托方让代理方执行操作,实际上是在委托类中向这个id类型指针指向的对象发送消息,而这个id类型指针指向的对象,就是代理对象。

代理模式的内存管理

我们通常使用weak来修饰代理,那么,可不可以使用strong呢,我们想一下,在控制器中对委托类的对象有一个强引用,如果使用strong修饰代理,委托类对象设置控制器为自己的代理后,对控制器有了一个强引用,这就导致了双方无法释放,形成强引用,所以,使用一个弱引用来修饰代理就可以避免这个问题,可能你又想问了,asign也表示一种”非拥有关系“,是不是可以用它来修饰代理呢?回答这个问题前我们可以先思考两个问题:

  1. asign和weak的的使用场景
    asign和weak都表示一种“非拥有关系”指针,不会使被修饰变量的引用计数改变,asign通常用来修饰基本数据类型,weak用来修饰对象,是一种弱引用,能够防止循环引用,也可以用来修饰代理,IB控件也可以使用weak(其实strong也可以啦,后面介绍)
  2. asign和weak的区别是什么?
    weak修饰的对象,在引用计数为0 ,被释放后会被置为nil,OC中向一个nil发送消息是不会崩溃的,而使用asign修饰的话,释放后不会被置为nil,这时候如果向这个对象发送消息,就会崩溃,野指针错误unrecognized selector sent to instance
    所以我们应该尽量将代理设置为weak型,安全嘛。
代理模式包含三部分:
  • 委托类(委托类可以制定协议,规定代理完成的功能)
  • 协议(方法列表,指定了委托方需要代理完成的功能)
  • 代理类(遵守协议,完成委托方指派的内容)

为什么用代理模式?

代理模式什么时候用?

代理模式优缺点

原文地址:http://www.jianshu.com/p/2113ffe54b30

相关文章

  • 设计模式

    单例模式 模板方法模式 工厂模式 代理模式 静态代理 JDK动态代理

  • 设计模式

    单例模式 代理模式 静态代理 jdk动态代理 cglib动态代理 工厂模式 适配器模式 建造者模式 观察者模式

  • kube-proxy的3种模式

    userspace代理模式 iptables代理模式 IPVS代理模式 https://kubernetes.io...

  • 第4章 结构型模式-代理模式

    一、代理模式简介 二、代理模式3个角色 三、代理模式的优点 四、代理模式的实例(游戏代练)

  • 理解代理模式

    原创博客地址 简介 代理模式,也叫做委托模式,分为:静态代理动态代理 代理模式也是平时比较常用的设计模式之一,代理...

  • 结构型 代理模式(文末有项目连接)

    1:什么是代理模式 2:没用代理模式时的实例 3:使用代理模式将其解耦(静态代理) 3:使用代理模式将其解耦(动态...

  • 设计模式-动态代理模式

    之前介绍了代理模式,大家也都了解了代理模式,不过之前介绍的代理模式是静态代理,静态代理什么意思?静态代理指的是代理...

  • 代理模式

    一、什么是代理模式 代理模式(Proxy pattern):代理模式又叫委托模式,是为某个对象提供一个代理对象,并...

  • 设计模式之代理模式(Proxy模式)

    代理模式的引入 代理模式的实例程序 代理模式的分析 代理模式的引入 Proxy是代理人的意思,指的是代替别人进行工...

  • Java设计模式之代理模式

    Java设计模式之代理模式 代理模式 静态代理 动态代理 为什么需要代理 通过代理,我们能够不用知道委托人是谁,而...

网友评论

      本文标题:代理模式

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