swift闭包和OC block类型的使用
之前看过一段swift,一直不知道OC中的block,即swift中的闭包是怎么实现的。今天就在网上搜索了一下,同时对比了一下OC中block类型的实现方法,然后写了一个Demo测试一下。
使用说明:
swift版本
1.声明类型typealiashideShowView=(Int)->Void
2.声明属性varmuFunc:hideShowView?
3.传递参数funcdidSelectedToHideView(hideFunc:@escaping(Int)->Void){muFunc=hideFunc}
4.监听值的变化functapEvent(){muFunc!(0)}
5.使用showView.didSelectedToHideView{(para)inNSLog("%d",para)}
6.Void是返回值类型,Int是参数类型,hideShowView是闭包的类型名称.第5项中的para是闭包的参数名,经测试,这个参数名在使用闭包的时候可以任意修改
OC版本
.h文件
//声明一个block类型 typedefvoid(^HideShowViewBlock)(intindex); //声明一个block属性 @property(nonatomic,copy)HideShowViewBlockhideViewBlock; //传递参数的方法 -(void)didHideShowViewWithBlock:(HideShowViewBlock)hideViewBlock;
.m文件
//实现传递参数的函数 -(void)didHideShowViewWithBlock:(HideShowViewBlock)hideViewBlock { self.hideViewBlock=hideViewBlock; } //监听需要传递值的变化 -(void)tapEvent { self.hideViewBlock(0); } swift闭包Demo的代码 classShowView:UIView { typealiashideShowView=(Int)->Void varmuFunc:hideShowView? privatevarviewFram:CGRect? overrideinit(frame:CGRect) { super.init(frame:frame) self.viewFram=frame self.backgroundColor=UIColor.gray self.createUI() } funccreateUI() { varcenterLabel=UILabel.init(frame:CGRect.init(x:0,y:0,width:(self.viewFram?.width)!,height:20)) centerLabel.center=self.center centerLabel.text="测试" centerLabel.textColor=UIColor.white centerLabel.textAlignment=NSTextAlignment.center centerLabel.font=UIFont.boldSystemFont(ofSize:16.0) self.addSubview(centerLabel) lettap=UITapGestureRecognizer.init(target:self,action:#selector(ShowView.tapEvent)) tap.cancelsTouchesInView=false self.addGestureRecognizer(tap) } functapEvent() { muFunc!(0) } funcdidSelectedToHideView(hideFunc:@escaping(Int)->Void) { muFunc=hideFunc } requiredinit?(coderaDecoder:NSCoder){ fatalError("init(coder:)hasnotbeenimplemented") } } classViewController:UIViewController { letWIDTH=UIScreen.main.bounds.size.width letHEIGHT=UIScreen.main.bounds.size.height overridefuncviewDidLoad() { super.viewDidLoad() } @IBActionfuncselectedToDoSomething(_sender:UIButton) { letshowView=ShowView.init(frame:CGRect.init(x:0,y:0,width:WIDTH/2,height:WIDTH/2)) showView.center=self.view.center showView.didSelectedToHideView{(para)in NSLog("%d",para) } self.view.addSubview(showView) } overridefuncdidReceiveMemoryWarning() { super.didReceiveMemoryWarning() //Disposeofanyresourcesthatcanberecreated. } }
总结
以上所述是小编给大家介绍的swift闭包和OCblock类型的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!