• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > 四房播播四房播播多播代理和通知的优缺点

四房播播四房播播多播代理和通知的优缺点

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了四房播播四房播播多播代理和通知的优缺点等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:四房播播 四房播播 多播代理和通知的优缺点
描述:

为什么我们使用多播代理而不使用通知呢?
多播代理的具体应用场景有哪些?
求大神指导


解决方案1:

好问题。
1、我了解到的解释是:通知会造成干扰,比如你要下载A、B、C三个图片,A下载完了,发出通知,B和C图片的等待通知的地方也会收到,但其实它们不需要。

我感觉这个问题是可以被处理的,只要给每个任务加上对应的标识就好了,比如上面的下载图片情况,通知名设为“loadImage_”+url的最后一节 就可以了。而且通知可以指定发送者

- (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSString *)aName object:(nullable id)anObject;

最后一个参数就是指定发送者

2、我觉得随便用,都可以。只是用代理有点好处:委托的方法名是已经定义好的,在接口定义上明确,你知道要传什么参数,对于合作开发或者造轮子都会更好。通知一般就是靠userinfo来传参数,这是一个无指定类型的字典,不确定里面的数据结构,不是很明确。

3、其实我觉得最好的还是用block或闭包。

  • 多委托,需要加入到数组里,造成强引用,可能会有循环引用问题。

  • 我觉得block写起来比较爽,可以把回调后的代码就写在旁边,比如下载图片,

var name:string = "xxx"
downloadImageWithCompleteHander:{
    //回调后的逻辑可以直接写在这里
    //可以直接使用这个临时变量name,因为block的copy性质
}

而委托你还要去在另写一个方法,特别是有些参数需要传递,用delegate就得把那些临时变量页也给搞成成员变量了,否则无法跨越方法使用

  • 最后block有很好的隔离性质。
    比如使用一个单例来管理所有的图片下载,假设叫loadManager,这时使用多委托,还是要区分不用的下载任务,因为所有的下载任务都到loadManager这个一个东西上了,它的多委托列表里包含不同下载任务的委托,还是要做区分。但是使用block,就可以自然的隔离开,这个解释比较复杂,就是block互相嵌套、从一开始就是隔离开的,看下SDWebImage的代码就清楚了。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 关于UISearchController的一个问题
  • 2017-06-05 apple-touch-startup-image不显示
  • 2017-06-05 textview如何实现添加一个编辑框。
  • 2017-06-05 微信小程序的图片显示
  • 2017-06-05 求大神如何上线带有抽奖活动的项目!
  • 2017-06-05 iOS基础控件ios声明变量提问
  • 2017-06-05 UITableView点击cell的时候怎么改变sectionHeader的颜色?
  • 2017-06-05 iossearchbarSearchDisplayController
  • 2017-06-05 App实现http长连接技术上可行吗?有必要吗?有哪些优缺点?
  • 2017-06-05 网络请求方式请教个网络请求的问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • iOS免真机测试时报错一共运行过4台iphone有其中一个不能真机测试啦
    • 爱奇艺pc客户端移动端上传图片,pc端查看变形?
    • swiftlet定义可选类型但不赋初值出现问题
    • iOS10编译器报错
    • iOS-UIButton按住后松开不执行UIControlEventTouchUpInside
    • 如何实现addChildViewController后,横屏旋转只让子控制器View旋转,父控制器视图不变
    • OC搜索时输入关键词“ipad”怎么匹配到字符串内容是“iPad”的
    • 打开开源项目,许多文件是红色
    • 之前有个完全用object写的app,现在能否用swift把他包起来,或者多家一个页面
    • imageview在模拟机上或者真机上显示不出来,在用debugviewhierarchy却可以看见怎么回事?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有