通知,代理,block 单例的使用和区别

区别

1.NotificationCenter 通知中心:“一对多”,在APP中,很多控制器都需要知道一个事件,应该用通知;

2.delegate 代理委托:

1,“一对一”,对同一个协议,一个对象只能设置一个代理delegate,所以单例对象就不能用代理;

2,代理更注重过程信息的传输:比如发起一个网络请求,可能想要知道此时请求是否已经开始、是否收到了数据、数据是否已经接受完成、数据接收失败

3.block(闭包)

block和delegate一样,一般都是“一对一”之间通信交互,相比代理block有以下特点

1:写法更简练,不需要写protocol、函数等等

2,block注重结果的传输:比如对于一个事件,只想知道成功或者失败,并不需要知道进行了多少或者额外的一些信息

3,block需要注意防止循环引用

文/不是谁的李逍遥(简书作者)
原文链接:http://www.jianshu.com/p/704307bcfe04
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-11-05 20:23:39

通知,代理,block 单例的使用和区别的相关文章

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例)

实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下: 情况1:A页面跳转到B页面 方法: 在B页面的控制器中,编写对应的属性,在A页面跳转到B页面的地方,给B的属性赋值即可 //SecondViewController.h @property(nonatomic) NSInt

atitit.guice3 绑定方式打总结生成非单例对象toInstance toProvider区别 v2 pb29

atitit.guice3 绑定方式打总结生成非单例对象toInstance toProvider区别 v2 pb29 1. 三 绑定方式的介绍1 2. To接口,链式绑定,用的最多的1 3. toConstructor1 4. toInstance生成的都是单例对象的...3 5. toProvider生成非单例对象3 5.2. 注解(Annotations)绑定3 5.3. 实例绑定(str,int绑定)4 5.4. 无目标绑定4 6. 参考5 重大的描述 1. 三 绑定方式的介绍 1. 在

通知/代理/block 三者比对

通知 :   “一对多”,”多对一” 传值 四个步骤:  1.发送通知2.创建监听者3.接收通知4.移除监听者 使用场景:1- 很多控制器都需要知道一个事件,应该用通知:2 - 相隔多层的两个控制器之间跳转 注意事项:  1, 一旦接收消息的对象多了,就难以控制了,可能有你不希望的对象接受了消息并做了处理 2,创建了观察者,在dealloc里面一定要移除: ————————————————————————————————————————————————————————————— 代理 “一对一”

通知 代理 block对比。

通知: 1.“一对多”,“多对一”传值 2.应用场景: 一对多传值的时候.  相隔多层的控制器之间传值的时候. 3.使用通知需要注意的是,控制器销毁的时候一定记得移除通知,项目中的通知尽量越少越好,通知多了比较难控制,很有可能发出了通知有别的控件监听到了从而做出相应操作 4.对于通知来说,通知的发送者根本不管接收者是否收到通知,也不管收到通知之后做什么操作,发送者只管发送,发送之后跟他没有一毛钱的关系了. 代理: 1.“一对一传值” 2.应用场景:一般用过公共接口,比如tableview的dal

设计模式:策略、代理、单例

一. 策略模式 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化. 先说这个场景中的要素:三个妙计,一个锦囊,一个赵云. 1)妙计:(一个接口,三个具体妙计) 1 package com.henry.strategy; 2 3 public interface IStrategy { 4 5 public void operate(); 6 7 } IStrategy.java 1 package com.henry.

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下: 情况1:A页面跳转到B页面 方法: 在B页面的控制器中,编写对应的属性,在A页面跳转到B页面的地方,给

iOS页面间传值的五种方式总结(Delegate/NSNotification/Block/NSUserDefault/单例)

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例) iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,

iOS页面间传值的方式 (Delegate/NSNotification/Block/NSUserDefault/单例)

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例) iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值: 1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性. 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一

设计模式 之 单例

单例模式(Singleton Pattern) 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 最近一直在用VB.NET重构机房收费系统,在重构中就出现了一个这样的问题: 每点击一次充值的菜单,都会出现一个新的充值窗体.我就希望它要么不出现,出现也只出现一个.这个就和我们今天讲的单例模式有关系了. 大家都知道,世界上的所有事物都是独一无二的,也就是说没有哪两个事物是完全相同的.从这个角度来讲,每一个事物相对于自身都是单例的.我们今天所讲的单例设计模式则有所区别,它是针对某一类事物来说,只