Block in iOS (1)

本文深入探讨Objective-C中的block概念,解释其作用并展示如何在代码中高效利用block简化动画处理,减少冗余代码,推荐使用block替代传统动画函数调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果大家翻翻UIView的几个动画的函数,就能够看到下面一个函数的定义,里面多了一个“^”,其实它就叫block。

+ (void)animateWithDuration:(NSTimeInterval)duration 
 animations:(void (^)(void))animations 
         completion:(void (^)(BOOL finished))completion

什么是block,其实简单的理解就是一段代码块。典型的block声明格式如下:

return_type (^block_name)(param_type, param_type, ...)


下面是一个例子,block返回的是一个整型,为两个数的和。

^(int number1, int number2){ return number1 + number2 };


如果将block的定义和声明放到一起,就得到下面的一个语句:

int (^add)(int,int) = ^(int number1, int number2){

    return number1+number2;

};


我们可以这样使用block:

int resultFromBlock = add(2,2);


再回到我们开头的animateWithDuration函数,一个典型的应用类似如下:

[UIView animateWithDuration:0.5

                 animations:^ {

                                 [customerImageView setAlpha:1.0f];

                                 [customerImageView setCenter:CGPointMake(100,100)];

                              }

                 completion:^(BOOL finished) {

                                 [customerImageView removeFromSuperview];

                              }];


block那么难理解和读,为什么还要用它,使用block有什么好处呢?如下几点希望能够帮组大家理解:


1. 如果大家不使用block来实现几个动画一起的话,就会发现代码显得很繁琐,而且可能需要再单独写一个回调函数,但是使用了block,就完全避免使用beginAnimations/commitAnimations

2. 代码简单了,不用在几个地方维护开启动画和回调的代码;

3. 貌似苹果推荐我们这样用block。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值