美文网首页
通知,Block,代理

通知,Block,代理

作者: _wxx | 来源:发表于2016-12-06 09:14 被阅读20次

OC中经常要用到一些事件和参数的传递,通常有三种做法:通知 代理 Block

通知可以一对多,代理

通知

1. 发送通知

NSDictionary *dict =[[NSDictionary alloc] initWithObjectsAndKeys:@(self.currentRow),@"cellRow", nil];

//创建通知
NSNotification *notification =[NSNotification notificationWithName:@"ChangeBuyAddShopCartBtnClick" object:nil userInfo:dict];//如果不需要传递参数
    
//通过通知中心发送通知
[[NSNotificationCenter defaultCenter] postNotification:notification];

2.注册通知

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(todayTeamBuy)name:@"ChangeBuyAddShopCartBtnClick"object:nil];

并在 @selector(todayTeamBuy) 方法中实现你想要的动作

3. 拿到通知传递的参数和调用的方法

- (void)todayTeamBuy:(NSNotification *)noti
{
      NSDictionary *dataDic = noti.userInfo;//通知传递的参数
}

4.在dealloc中注销通知

[[NSNotificationCenter defaultCenter] removeObserver:self];



Block

1.逆传数据  (A是B 的父控制器  , B点击按钮改变Label)

B.h

//传值:需要传值的时候,再去调用

@property(nonatomic,strong)void(^valueBlcok)(NSString*str);



B.m

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event

{

//传值给ViewController

//调用代理方法传值

//if ([_delegate respondsToSelector:@selector(modalViewController:clickScreen:)]) {

//[_delegate modalViewController:self clickScreen:@"123"];

//}

//传值:调用block

if(_valueBlcok) {

_valueBlcok(@"123");

}

}

代理

当A做什么事情不方便的时候,建立一个委托,委托B帮自己去实现方法。这种模式叫作协议 委托,B就是A 的代理.
常见的有UITableView.delegate


相关文章

  • iOS 逆向传值

    代理(delegate)、通知(NSNotification),block等等。 1、委托代理delegate只能...

  • 代理/通知/block

    一:通知(NSNotification) 1.通知的发布 2.通知的监听 3.通知的移除 通知的监听需要在发布之前...

  • 代理,通知,Block

    1.三者的传值对应关系。 我们说通知是”一对多”的关系。 而代理和Block通常是”一对一”的关系。 Block的...

  • 通知,Block,代理

    OC中经常要用到一些事件和参数的传递,通常有三种做法:通知 代理 Block 通知可以一对多,代理 通知 Blo...

  • 通知、代理、block

    通知、代理、block 是iOS中的三大回调方式。 通知 NSNotificationCenter,它就像一个广播...

  • 代理,通知,block

    代理的使用: 代理是一对一.首先要在需要传递值的类中声明一个协议 在这个类中定义一个delegate的属性,谁是它...

  • 通知、代理、block

    通知、代理、block 是iOS中的三大回调方式。 通知 NSNotificationCenter,它就像一个广播...

  • 关于反向传值(block,代理,通知)

    5种反向传值的方式 通知 代理 block

  • iOS 传值方式

    1,从前向后传值:属性传值 2, 从后向前传值: block、 代理、 通知 结论1, block、 代理 传值用...

  • Swift 快速生成代码

    控制器: 视图: Block(闭包): Protocol(代理): NotificationCenter(通知):...

网友评论

      本文标题:通知,Block,代理

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