Block项目中的实战

-、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的对象

最后在调用中就可以在成功和失败里面取到各自的值了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,B...
    smile刺客阅读 2,366评论 2 26
  • 前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这...
    小人不才阅读 3,785评论 0 23
  • 在我受刑之时,请给我一件深色的袍子,这样别人便看不见我的血在流。
    那你肯定找不着阅读 210评论 0 0
  • 铁环揣着隔壁班李雅琪给他的情书回家的时候,他爹妈正在吵架,大哥云生跪在地上啃面包,铁环妈撕心裂肺的拉着铁环爹...
    Z小槿阅读 473评论 0 1