第十四章:代码块和并发性
block
<returntype>(^blockname)(list of arguments) = ^(arguments){body;}
声明和实现block时需要^符号,调用时不需要。
int (^multiply_block)(int number) = ^(int number){return (6*number);}
int result = multiply_block(7);
内联方式使用block
NSArray* sortedArray = [array sortedArrayUsingComparator:
^(NSString *obj1,NSString *obj2){return [obj1 compare:obj2]}];
使用typedef
typedef double (^multiply_block)(double a);
multiply_block myltiply = ^(double a){return 7*a;};
_block变量
本地变量会被block作为常量获取,即无法更改变量,若要更改,则声明为_block
_block int temp = 3;
有些变量无法声明为_block,两个条件:1无长度可变数组2无包含可变长度数组的结构体
内存管理 Block_copy() Block_release()
并发性concurrent
时间: 2024-10-09 06:13:58