Surrogate Objects

消息转发 不仅参照了多继承,它还让用轻量级对象代替重量级对象成为了可能。
通过代理(Surrogate)可以为对象筛选消息。

代理管理发送到接收者的消息,确定参数值被复制,拯救等等。但是它不企图去做很多其他的,它不重复对象的功能只是简单地提供对象一个可以接收来自其他应用消息的地址。

举个例子,有一个重量级对象,里面加入了许多大型数据,如图片视频等,每次使用这个对象的时候都需要读取磁盘上的内容,需要消耗很多时间(time-consuming),所以我们更偏向于采用懒加载模式。
在这样的情况下,你可以初始化一个简单的轻量级对象来代理(surrogate)它。利用代理对象可以做到例如查询数据信息等,而不用加载一整个重量级对象。如果是直接用重量级对象的话,它会一直被持有占用资源。当代理的forwardInvocation:方法第一次接收消息的时候,它会确保对象是否存在,如果不存在边创建一个。
当这个代理对象发送的消息覆盖了这个重量级对象的所有功能时,这个代理对象就相当于和重量级对象一样。
创建一个轻量级的对象来代理一个重量级对象,完成相对应的功能,而不用一直持有着重量级对象,从而可以减少资源占用。

以后找个时间,写一个Demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 Runtime是iOS开发者进阶必须学习的一个知识点。网上关于Runtime 有许多介绍,有深入有简单介绍,...
    雨田_Toping阅读 5,464评论 1 1
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,808评论 0 9
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,196评论 4 61
  • 文/逗逗,图/花瓣网 1 爱对了人,是爱情。 爱错了人,是青春。 可是,直到结束了,才知道答案,是爱情还是青春呢?...
    遇见逗逗阅读 1,358评论 0 0
  • 昔日如何思梦长,不知今夜可相当。 清风伴月此间影,归鸟逐云何处乡。 独怜孤笔诗千首,且惜寸心天一方。 欲觅少年情未...
    雪窗_武立之阅读 2,828评论 1 6