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;

 

posted @ 2016-06-25 18:39  -Eazy-  阅读(266)  评论(0编辑  收藏  举报