class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
typealias testBlock = (String) -> Void
let aaa: testBlock = {str in
print(str)
}
aaa("sss")
showYouTest { (index) in
print(index)
}
}
func showYouTest(testBlock: @escaping (_ index:Int) -> Void) {
//做一个延迟操作
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5) {
//五秒之后调用闭包
testBlock(8)
}
print("我是函数")
}
}
OC版一个小例子
@interface ViewController ()
@end
@implementation ViewController
static int n = 99;
static NSString *name = @"test";
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
void(^block0)(void) = ^{
NSLog(@"-----block0");
};
block0();
NSLog(@"block0 => %@",block0);
void(^aBlock)(NSString *x ,NSString *y);
aBlock = ^(NSString *x ,NSString *y){
NSLog(@"----%@---%@",x,y);
};
aBlock(@"lilei",@"hanmeimei");
int(^addBlock)(int ,int) = ^(int x, int y){
return x +y;
};
[self useBlockForOC:addBlock];
[self useBlockForOC:^(int x, int y) {
return x+y;
}];
}
-(void)useBlockForOC:(int(^)(int ,int))aBlock{
NSLog(@"result = %d" ,aBlock(200 ,300));
}
@end
网友评论