21 闭包

2017-07-05  本文已影响39人  猴子的救兵520

闭包的介绍

闭包的使用

block的用法回顾

@interface HttpTool : NSObject
- (void)loadRequest:(void (^)())callBackBlock;
@end

@implementation HttpTool
- (void)loadRequest:(void (^)())callBackBlock
{
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        NSLog(@"加载网络数据:%@", [NSThread currentThread]);

        dispatch_async(dispatch_get_main_queue(), ^{
            callBackBlock();
        });
    });
}
@end
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self.httpTool loadRequest:^{
        NSLog(@"主线程中,将数据回调.%@", [NSThread currentThread]);
    }];
}
    // 类型:
    返回值(^block的名称)(block的参数)

    // 值:
    ^(参数列表) {
        // 执行的代码
    };

使用闭包代替block

class HttpTool: NSObject {
    
    func loadRequest(callBack : @escaping ()-> ()) {
        
        DispatchQueue.global().async { () -> Void in
            print("加载数据", Thread.current)
            
            DispatchQueue.main.async { () -> Void in
                callBack()
            }
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读