block的几种写法,转载

发布时间 2023-11-15 10:39:36作者: _Roy

block 的几种写法:

As a local variable:本地参数

 (Demo1) blockType blockName = blockExpression 

 returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};
 

As a property: 类属性

(Demo2) blockType blockName

@property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);

As a method parameter: 函数参数定义

(Demo3) blockType blockName

- (void)someMethodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;

As an argument to a method call:函数传入参数

(Demo4) blockExpression

[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];

As a typedef:做一个别名时

(Demo5) blockType blockName(TypeName)

typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};

As a Type: 作为一个类型

(Demo6) blockType blockName = (blockType)blockName

returnType(^blockName)(parameterTypes) = (returnType(^)(parameterTypes))variable;