例子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;