[Swift]Block作为参数传递及执行顺序的小例子

2021-12-13  本文已影响0人  汴城码农
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
上一篇下一篇

猜你喜欢

热点阅读