Swift闭包使用详情
闭包和OC黄总的block非常相似
- OC中的block是匿名的函数
- Swift中的闭包是一个特殊的函数
- block和闭包都经常用于回调
一.OC中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
进行网络请求,请求到数据利用block进行回调
-(void)touchesBegan:(NSSet<UITouch*>*)touches withEvent:(UIEvent *)event{[self.httpTool loadRequest:^{NSLOg(@"主线程中,将数据回调.%”,[NSThread currentThread]);}];
}
二.Swift中闭包用法
//闭包的类型:(参数列表)->(返回值类型)func loadData(callBack : (_ jsonData : String)->()){dispatch_async(dispatch_get_global_queue(0,0)) { () -> Void inprint("发送网络请求")dispatch_async(dispatch_get_main_queue(),{ () -> Void inprint("获取数据,并进行回调")callBack(jsonData:"返回的数据")})}}