你的位置:首页 > 软件开发 > 操作系统 > block的初识

block的初识

发布时间:2015-08-20 12:00:14
block的介绍:Block是iOS4.0之后新增的一种语法结构,也称为“闭包(closure)”。 SDK4.0新增的API大量使用了Block。  Block是一个匿名的函数代码块,此代码块可以作为参数传递给其他对象。 ...

block的介绍:

Block是iOS4.0之后新增的一种语法结构,也称为“闭包(closure)”。 

SDK4.0新增的API大量使用了Block。  

Block是一个匿名的函数代码块,此代码块可以作为参数传递给其他对象。

   

 

  对象

方法{

      block块{

       ...代码

      };

 

Block的使用:

1.block的声明

   //定义类型,定义变量

    int(^sum)(int a, int b );

 

2.block的创建

 

 

  //实现block

 

    sum = ^(int a, int b){

 

        return a+b;

 

    };

 

 

 

3.block的调用

    

   //1直接调用

    int sum1 = ^(int a,int b){

        return a+b;

    }(5,9);

    NSLog(@"%d",sum1);

    

    //2通过block变量调用

    int sum2 = sum (20,39);

    NSLog(@"%d",sum2);

    

4.多种情况下的block

#pragma mark creatkindsofBlock

 

- (void)creatkindsofBlock{

 

    //1---无参数,无返回值

    ^(){

        NSLog(@"无参数,无返回值");

    }();

    

    //2---有参数,无返回值

    ^(int a,NSString *text){

        NSLog(@"%d, %@",a,text);

    }(88,@"有参数,无返回值");

    

    //3---无参数,有返回值

    NSString *text = ^(){

        return @"有返回值,无参数";

    }();

    NSLog(@"%@",text);

    

    //4---有参数,有返回值

 

}

 

5.全局block变量

首先定义一个全局的block

{

    int(^myBlock)(int a, int b);

}

 

#pragma mark - 全局block变量

-(void)createMyBlock{

    

    //定义block变量

    int(^sumBlock)(int x,int y);

    //实现block,并且赋值

    sumBlock = ^(int x,int y){

        return x+y;

    };

    

    //直接赋值,block变量可以直接赋值

    myBlock = sumBlock;

}

 ****全局block可以直接调用,直接赋值

    //全局block变量

    [self createMyBlock];

    NSLog(@"sum :%d",myBlock(20,60));

 

当然block的初步认识里还应该有block的应用场景,block和变量,block的内存管理一些问题,我就不写了😅。

 


原标题:block的初识

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录