Block项目中的实战

作者: 飞鱼IOS | 来源:发表于2015-09-02 14:26 被阅读426次

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

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

    相关文章

      网友评论

      本文标题:Block项目中的实战

      本文链接:https://www.haomeiwen.com/subject/ilslcttx.html