block的各种定义
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了block的各种定义相关的知识,希望对你有一定的参考价值。
1、作为变量
//block 的申明,定义,调用,block快捷方式inline
//<#returnType#>(^<#blockName#>)(<#parameterTypes#>) = ^(<#parameters#>) {
// <#statements#>
//};
// blockName(parameters);
//frist method
void(^block1)() = ^{
NSLog(@"调用了block1");
};
block1();
//second method ,如果没有参数,参数可以隐藏,如果有参数,定义的时候,必须要写参数,而且必须要有参数变量名
void(^block2)(int) = ^(int a){
};
block2(2);
//third method ,block式右边定义返回类型可以省略,不管有没有返回值,都可以省略
//没省略
int(^block3)() = ^int{
return 3;
};
block3();
//省略
int(^block4)(NSString *) = ^(NSString *b){
return 4;
};
block4(@"hello");
2、作为属性
@property (nonatomic, copy) 返回值类型 (^block的名称)(参数类型);
@property (nonatomic, copy) returnType (^blockName)(parameterTypes);
3、作为方法声明的参数
- (void)方法名:(返回值类型 (^)(参数类型))block的名称;
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;
4、作为方法实现的参数
[对象/类 方法名:^返回值类型 (参数) {...}];
[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];
5、作为typedef
typedef 返回值类型 (^类型名称)(参数类型);
类型名称 block的名称 = ^返回值类型(参数) {...};
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};
以上是关于block的各种定义的主要内容,如果未能解决你的问题,请参考以下文章