OC基础:Block简介

来源:互联网 发布:网络代刷平台 编辑:程序博客网 时间:2024/05/17 08:56

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简介

0 0
原创粉丝点击