iOS 关于block的简单使用

  首先,这里只是对于block的基本用法,至于更深入的了解,请期待下一回合。

  用block可以定义任意的代码片段,可以将其像对象一样传入另一个方法,是c级别的语法,和c中的函数指针很类似。

  c中的函数指针定义;

  返回值类型|函数名|参数

  如:

int(*fun)(int a,int b);

obj-c中的 block 定义;

返回值类型  方法名   参数

如:

int(^blockDemo)(intnum);

我们可以看到两者之间唯一的区别就是^和*了。

使用block 可以用于回调,动画,遍历等。

首先定义一个 block

typedef NSString *(^block)(NSInteger);

然后写一个 简单的方法,有3个参数,其中最后一个为 block,整个方法返回一个NSInteger类型的值

- (NSInteger)dealWithArray:(NSArray *)array andInteger:(NSInteger)integer andBlock:(block)block

{

   NSInteger sum = 0;

   for (NSString *objin array) {

        sum += [objintegerValue];

        sum += [block([objintegerValue]) integerValue];

    }

    sum += integer;

    return sum;

}

在调用的地方这样写。

NSArray *arr = @[@"1",@"2",@"3"];

NSInteger n = [selfdealWithArray:arrandInteger:5andBlock:^NSString *(NSInteger i) {

   return [NSStringstringWithFormat:@"%ld",(long)i * i];

}];

最后打印一下n的值。

 NSLog(@"n = %ld",(long)n);

2015-02-11 13:49:59.368 BlockDemo[1732:73874] n = 25

我们来分析一下

在实际调用开始写的那个方法的时候,将block调用了三次


每次又是使用的 数组的一个元素,将 传进去的值的平方转换为NSString类型后返回

sum 一次为 sum+1+1*1+2+2*2+3+3*3+5,sum初始值为0 所以最后会得到 n=25;

相信看了这个例子 也对将block作为方法的一个参数使用有了一定的了解。


上述仅为作者本人自己的了解,肯定有很多地方描述的有问题,请指出问题,相互提高,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值