iOS开发 - 如何写出漂亮的block

Block具有快速传值,简化代码的作用,但是在实际使用中如何写出漂亮的block却不是那么简单的事,就拿博主来说,虽然block经常用,但是奉行者拿来主义却总是不用心记忆写法,对于一个专业的开发者来说,这就落了下乘,索性回头看了下block,对于block又有了新的认识,下面博主通过代码来介绍下如何写出漂亮的block:

    //有返回值的block
    int (^sumBlock)(int b,int c);
    sumBlock = ^(int a,int b){
        return b + a;
    };
    //无返回值的block
    void (^sumBlock2)();
    sumBlock2 = ^(){
        NSLog(@"Hello");
    };
/*以上两种block看起来像那么回事,但是在实际运用中很少这么单独用,block多出现于传值方法,属性中。*/
@property(nonatomic,copy)void (^myBlock)();
@property(nonatomic,assign)int (^numBlock)(int a);

    //无返回值的属性block
    self.myBlock = ^(){
        NSLog(@"To use myBlock");
    };
    //有返回值的属性block
    int num = 10;
    self.numBlock = ^(int a){
        return num;
    };
/*使用的话可以当作一个方法在本类中调用,也可在其他类中调用本类中的操作,获取本类中的参数值。*/
block格式,在定义完类型后:(返回值类型 (^) (返回参数))block名
//这是一个无返回值的方法block
- (void)goToWorkOnRoad:(NSString *)onRoad duChe:(void(^)(NSString *moreCar))late noDu:(void(^)(NSString *goodRoad, NSString *goodLuck))inTime;

//实现这个方法
- (void)goToWorkOnRoad:(NSString *)onRoad duChe:(void (^)(NSString *))late noDu:(void (^)(NSString *, NSString *))inTime
{
//根据需要给出自己的判断依据,博主这里两个if都执行了,实际中有且只能有一个执行。
    if (late != nil)
    {
        late(@"late");
    }
    if (inTime != nil)
    {
        inTime(@"intime1",@"intime2");
    }

}
  [self goToWorkOnRoad:@"this road" duChe:^(NSString *moreCar) {
        //堵车了
    } noDu:^(NSString *goodRoad, NSString *goodLuck) {
        //没堵车
    }];
/*看起来是不是有点眼熟?有点AFNetworking的味道?这里你可以根据自己的需要往里面传值,下个界面block中执行回调或者在自己的界面中玩也是可以的*/


/*如果要变成一个有返回值的方法,很简单,把void变成对应的类名即可,同时把需要的参数放入返回类型中(return和调用block方法传值其实是一样的)不懂的看看AF的请求方法里面怎么写的。*/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingFire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值