block 的使用
前言
ReturnType
:你所想要返回的数据类型;ParameterType
:你所要传递的参数类型;parameterName
:你所要传递的参数名;blockName
:你所构造的 block 名。
(另外参数可以传入多个)
作为变量
ReturnType (^blockName)(ParameterType) = ^ReturnType (ParameterType parameterName) {
// Your code here...
};
作为属性
@property (copy) ReturnType (^blockName) (ParameterType);
作为方法定义参数
- (void)yourMethod:(ReturnType (^)(ParameterType))blockName;
作为方法传入参数
[someObject doSomethingWithBlock: ^ReturnType (ParameterType parameterName) {
// Your code here...
}];
匿名 Block
^ReturnType (ParameterType parameterName) {
// Your code here...
};
使用 typedef
typedef ReturnType (^blockName)(ParameterType);
内联 Block
^ReturnType (ParameterType parameterName) {
// Your code here...
}(parameterValue);
递归 Block
__block ReturnType (^blockName)(ParameterType) = [^ReturnType (ParameterType parameterName) {
if (returnCondition) {
blockName = nil;
return;
}
// Your code here...
} copy];
blockName(parameterValue);
作为返回值
- (ReturnType(^)(ParameterType))methodName {
// Your code here...
}
在 swift 中(闭包)
var blockName = { (parameterName: ParameterType) -> ReturnType in
return returnValue;
}