我对Block的理解,以及用Block实现登录后继续执行登录前的
2017-03-21 本文已影响14人
无聊肥猫
我对Block的理解
假设有一个盒子,这个盒子可以让放进去的钱加倍,无论何时何地,无论你把多少钱放进去,直接加倍。
Block就像一个这样的盒子,我们要先设计这个盒子:
typedef int (^DoubleBlock)(int money);
DoubleBlock就是这个盒子(block)的名字,前面的int是block的返回值,相当于最后从盒子里出来的钱的数量。后面的int money则是block的传入参数,相当于将要放进盒子里的钱的数量。
盒子设计好了,我们相当于做了一个模具,接下来我们要开始做一个实际存在的盒子:
@property (nonatomic, copy) DoubleBlock block;
这里我们声明了一个Block的对象,一个空的盒子,还没有任何的作用,它还不能让钱翻倍,因此我们需要对它进行赋值:
[self setBlock:^(int money){
return money * 2;
}];
Block的功能已经赋值,接下来就是调用了。随时随地,都可以直接调用。
int result = self.block(999);
到此一个简单的Block的应用就结束了。
用Block实现登录后继续执行登录前的操作
APP中某个功能需要用户登录成功后才能使用,因此当用户未登录或者登录状态无效的时候点击该功能,需要提示用户去登录,登录成功后,系统自动执行用户之前的点击操作,对于用户体验来说是非常重要的一点。
用Block来实现此功能,可以让代码条理清晰,易读,方便维护。只需要在用户登录的ViewController里声明一个Block,在登录成功后执行这个Block即可。
至于Block的功能,就根据每个登录前的操作不同而不同了。