你的位置:首页 > 操作系统

[操作系统]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的内存管理一些问题,我就不写了😅。
因为本人是个小菜鸟~,所以啦,我还要去写作业做练习,麻烦各位不要吐槽,多多鼓励,谢谢。
希望对和我一样刚开始学习ios的同学们有一点点帮助,总结的不是很好,如有错误,请一定指正,我会虚心向您学习。。