Block封装了一段代码,能够在任什么时候候执行多线程
Block能够做为函数参数或者函数的返回值,而其自己又能够带输入参数或返回值。它和传统的函数指针很相似,可是有区别:异步
block是inling(内联函数)的,而且默认状况下它对局部变量是只读的函数
苹果官方建议尽可能多用block,在多线程、异步任务、集合遍历、集合排序、动画转场用的不少。动画
1、block能够访问外面定义的局部变量。若是外部的变量用了__block关键字进行了声明,就能够在block内部修改这个变量。不然不能修改。spa
void test2() {线程
//__block有两个下划线。指针
__block int c = 20;排序
//声明了一个block变量。test
MySum sum = ^(int a, int b) {变量
//若是外部的变量用了__block关键字进行了声明,就能够在block内部修改这个变量。不然不能修改。
c = 29;
//block能够访问外面定义的局部变量。
NSLog(@"%i",c);
return a + b;
};
NSLog(@"%i",sum(1,2));
}