ios 添加block 类别_ios 浅谈block的基本使用[原创]

block:我们称代码块,他类似一个方法。其实block也是一个数据类型,只是这个数据类型比较的特殊,是用来保存代码块的数据类型。

快捷键:输入inlineBlock

}

基本结构:

返回值类型(^block名字)(参数类型) = ^返回值(参数类型 参数名 ){

如果block有返回值,一定要记得在block代码中返回值

但是申明中的返回值可以不写

} ;

//1.Block的参数是给Block代码块用的

//2.类型:返回值类型(^)(参数类型

常见的使用场景:

1.传递数据:把block当作参数去传值

2. 响应事件:(特殊的传递数据):当内部不确定外界做什么事情的时候可以搞一个block参数。

3.链式语法 :核心思想为将block作为方法的返回值,且返回值的类型为调用者本身,并将该方法以setter的形式返回,这样就可以实现了连续调用,即为链式编程。如Masonry框架(参考网络文档)

block简单的声明使用

简单的声明

使用较为复杂的block

实例:重写block动画

//view的动画实现,将不确定的事用block代替,此部分代码可以通过外界传入,交给使用者去处理。

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations ;

[UIView animateWithDuration:

CGFloat duration = 0.5;

void (^task)() = ^{

self.redView.center = CGPointMake(300, 400);

self.redView.bounds = CGRectMake(0, 0, 200, 200);

};

[self myAnimateWithDuration:duration animations:task completion:^{

NSLog(@"动画完成");

}];

}

- (void)myAnimateWithDuration:(CGFloat)duration animations:(void(^)())anim completion:(void(^)())completionTask{

self.completionTask = completionTask;

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:duration];

[UIView setAnimationDelegate:self];

[UIView setAnimationDidStopSelector:@selector(stop)];

//动画执行代理

anim();

[UIView commitAnimations];

}

//动画完成时调用

- (void)stop {

self.completionTask();

}

欢迎大家指正批评!

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/24928.html

微信打赏

支付宝打赏

感谢您对作者Annwn的打赏,我们会更加努力!    如果您想成为作者,请点我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值