-、block 解决两个界面之间的传值,常应用在网络请求中,请求成功与否返回响应的数据。
现在基于BaicViewController来记录下block的申明创建调用。
BaicViewController类的.h文件中
1,定义一个block:
typedef void(^myBlok)(id obj);
2,紧接着定义一个属性。
@property (nonatomic,copy) myBlok dataBlock;
3,然后再定义一个实列方法:
- (void)imagePostWithImageCallBlock:(void(^)(id obj))comParam;
BaicViewController类的.m文件中
1,实现实列方法
在实现方法中,一定要指定 self.dataBlock = comParam,将block指向comparam。
2,当要返回数据的时候就用:
self.dataBlock(A);
A 可以是类,数组,字典等。
定义已经完成,接下来是如何调用:
在其他类中申明一个BaicViewController的对象,然后直接调用该对象的block的实列方法即可,然后就会在该方法的block块中得到你想要的数据了。
二、如何创建一个能在一个方法里成功和失败不同处理结果的block,步骤和上面的大致相似。
BaicViewController类的.h文件中
1,定义两个block,一个对应成功时的,一个对应失败时的:
typedef void (^successBlock)(UIImage * imageObj);
typedef void (^failBlock)(NSString * failObj);
这里就不用定义属性了。
2,然后再定义一个实列方法:
- (void)imagePostSuccess:(successBlock)success Fail:(failBlock)fail;
这里直接是将两个block作为方法的参数,所以就不用定义属性了,在后面的指向部分也就不用指向了。
BaicViewController类的.m文件中
1,实现实列方法,在实列方法中:
当判断成功时我们返回数据 success(A),A在这里是一个UIImage的对象
当判断失败时我们返回数据 fail(B),B在这里是一个NSString的对象
最后在调用中就可以在成功和失败里面取到各自的值了。
网友评论