Block实现代理/通知效果

Posted -Eazy-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Block实现代理/通知效果相关的知识,希望对你有一定的参考价值。

例子1:A控制器-》跳转—》B控制器 , 假设想从B控制器回传数组给A控制器

实现:B控制器.h文件定义一个block参数,.m文件执行block,A控制器设置block内容

B.h文件
//创建block块 @property(nonatomic,copy) void (^Block)(NSArray *array);
B.m文件 //执行block块
!self.Block? (此处为空格):Blcok(array); //判断是否存在Block,存在则执行Block,并且将数组array传递给某某(某某指who定义了Block块的执行代码,此处传递给A控制器)

A.m文件
B *b=[[B alloc]init];
b.Block=^(NSArray *array){
  //Block执行代码
  //... 
};
//B.m中判断存在Block块,则执行Blcok(array),于是进入A.m的 “Block执行代码” 处进行处理,其中Block执行代码”array参数获得B.m传递过来的array

//使用Block过程,需注意循环引用,如对self的循环引用,使用__weak typeof(self) weakSelf=self;

例子2:A控制器完成任务,通知B控制器执行下一步任务

A.h文件
//创建block块
@property(nonatomic,copy) void (^Block)();

A.m文件
//执行block块
!self.Block? (此处为空格):Blcok(); //判断是否存在Block,存在则执行Block


B.m文件
A *a=[[A alloc]init];
a.Block=^(){
  //Block执行代码
  //进行一步任务
};
//a.m中判断存在Block块,执行Blcok(),B.m进入“Block执行代码” 相当于接收到A传递过来的通知信号

//使用Block过程,需注意循环引用,如对self的循环引用,使用__weak typeof(self) weakSelf=self;

 

以上是关于Block实现代理/通知效果的主要内容,如果未能解决你的问题,请参考以下文章

61 (OC)* 代理 block 通知 代理 kvo

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

iOS 代理

block和delegate 通知区别

iOS 页面间几种传值方式(属性,代理,block,单例,通知)

block和delegate的选择