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 [NSString stringWithFormat:@"%d",a];
};
NSLog(@"%@",geshihua(19));
这只是基础篇,后面的高级应用还在学习中,感兴趣留意后面的更新,有错误的 请在下面指出