Block

来源:互联网 发布:淘宝免费引流方法 编辑:程序博客网 时间:2024/05/16 14:43

Block简单语法

Block在typedef中的声明格式:typedef 返回值类型 (^块名称)(参数类型1,参数类型2,参数类型3.........);

Block普通的声明格式:返回值类型 (^块名称)(参数类型1,参数类型2,参数类型3.........);

Block变量的声明格式:块名称   变量名称1,变量名称2,变量名称3.......;

Block变量的赋值(实现),注意声明中的参数和返回值个数和类型要互相匹配,但是返回值类型在实现中无需标明但是块内必须return才行且类型要与声明的一致,最后在花括号外面记得加分号

//在无参数的情况下可以是下面的格式:

变量名 = ^{

//块里面操作,任意发挥

};


//标准的块变量的实现方法

变量名 = ^(){

//块的操作,随意.....

};

块的调用,实际上块是一种匿名函数,调用的格式跟函数的调用格式一样

块变量名();   //块使用typedef的情况下使用这种方式

块名称(); //没有使用typedef起别名的时候用这种方式


在块内部可以使用他所在的块中的外部变量,但是无法修改变量的值,若要修改变量的值需要在变量前面加上__block的关键字

块使用property的时候使用copy属性


例子:

//给块起别名

typedef void(^BLOCK) (int,int);


//创建块变量并且赋值

    BLOCK b1 = ^(int a,int b){

        NSLog(@"%d   and   %d",a,b);

    };


//无参块的创建实现和调用

    void (^myBlock)() = ^(void){

        NSLog(@"这是一个无参块");

    };

    

    myBlock();

    

    void (^myBlock2)();

    

    myBlock2 = ^(){

        NSLog(@"dshdskblhlsdhihfaldhf");

    };

    

    myBlock2();

有参块、有返回值的例子

NSString * (^geshihua)(int) = ^(int a){

        return  [NSStringstringWithFormat:@"%d",a];

    };

    

    NSLog(@"%@",geshihua(19));



这只是基础篇,后面的高级应用还在学习中,感兴趣留意后面的更新,有错误的 请在下面指出

0 0