美文网首页
[Swift]Block作为参数传递及执行顺序的小例子

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

作者: 汴城码农 | 来源:发表于2021-12-13 09:03 被阅读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
    

    相关文章

      网友评论

          本文标题:[Swift]Block作为参数传递及执行顺序的小例子

          本文链接:https://www.haomeiwen.com/subject/ngcjfrtx.html