OC基础:Block简介

Block(代码块):简介

        代码块是C语言的一个扩展,在Objective-C完全适用,苹果公司在iOS4以后开始引入block,现在block在iOS开发中适用越来越普遍,其功能强大。简单来讲,block就是封装了一组代码语句的对象,他能在任何时间执行。

1、Block简介

Block块是封装工作单元的对象,是可以在任何时间执行的代码段。其本质上是可移植的匿名函数,可以作为方法和函数的参数传入,可以从方法和函数中返回。—(翻译自官方文档)

块是对C语言的一种扩展,它并未作为标准的ANSI C所定义的部分,而是有苹果公司添加到语言中的。块看起来更像是函数,可以给块传递参数,块也可以具有返回值。

2、Block的定义与调用

块是以插入字符^开头,后面的一个括号()内表示块所需要的参数,最后面的大括号{}中是块主体,最后以分号;结束。如下面代码所示:

 
 
  1. ^(int inputNum) {
  2. NSLog(@"printBlock Called!");
  3. return inputNum;
  4. };

同时,也可以将这个块赋值给一个变量printBlock,声明方式如下。其中,变量printBlock就是指向代码块的指针。

 
 
  1. int (^printBlock)(int) = ^(int inputNum) {
  2. NSLog(@"printBlock Called!");
  3. return inputNum;
  4. };

当需要调用已经定义的block时,可以使用如下方式,和函数调用十分类似。

 
 
  1. int i = printBlock(100);

3、把Block声明为类的属性

由于Block就是一个存储了一段代码的对象,因此,也可以把Block设置为某个类的属性。同时,可以用self.blockProperty来给该属性赋值。

 
 
  1. @interface ViewController ()
  2.  
  3. @property(copy) void (^blockProperty) (void);
  4.  
  5. @property(copy,nonatomic) void (^blockPropertyWithInput) (int);
  6.  
  7. @end
 
 
  1. - (void)viewDidLoad {
  2. [super viewDidLoad];
  3. //blockProperty
  4. self.blockProperty = ^{
  5. NSLog(@"blockProperty is called!");
  6. };
  7. self.blockProperty();
  8. //blockPropertyWithInput
  9. self.blockPropertyWithInput = ^(int i){
  10. NSLog(@"blockPropertyWithInput is Called! I Value is %d", i);
  11. };
  12. self.blockPropertyWithInput(150);
  13. }



转载自:宏创学院 » Block(块)介绍之一:Block简介

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值