全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

swift闭包和OC block类型的使用

之前看过一段swift,一直不知道OC中的block,即swift中的闭包是怎么实现的。今天就在网上搜索了一下,同时对比了一下OC中block类型的实现方法,然后写了一个Demo测试一下。

使用说明:

swift版本

1.声明类型 typealias hideShowView = (Int) -> Void

2.声明属性 var muFunc:hideShowView?

3.传递参数 func didSelectedToHideView(hideFunc:@escaping (Int)->Void) { muFunc = hideFunc }

4.监听值的变化 func tapEvent() { muFunc!(0) }

5.使用 showView.didSelectedToHideView { (para) in NSLog("%d", para) }

6.Void 是返回值类型,Int是参数类型,hideShowView是闭包的类型名称.第5项中的para是闭包的参数名,经测试,这个参数名在使用闭包的时候可以任意修改

OC版本

.h文件

//声明一个block类型
typedef void(^HideShowViewBlock)(int index); 
//声明一个block属性
@property (nonatomic,copy) HideShowViewBlock hideViewBlock;
//传递参数的方法
 - (void)didHideShowViewWithBlock:(HideShowViewBlock)hideViewBlock;

.m文件

//实现传递参数的函数
- (void)didHideShowViewWithBlock:(HideShowViewBlock)hideViewBlock
{
 self.hideViewBlock = hideViewBlock;
}
//监听需要传递值的变化
- (void)tapEvent
{
 self.hideViewBlock(0);
}
swift 闭包 Demo的代码
class ShowView: UIView
{
 typealias hideShowView = (Int) -> Void
 var muFunc:hideShowView?
 private var viewFram:CGRect?
 override init(frame:CGRect )
 {
  super.init(frame: frame)
  self.viewFram = frame
  self.backgroundColor = UIColor.gray
  self.createUI()
 }
 func createUI()
 {
  var centerLabel = 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)
  let tap = UITapGestureRecognizer.init(target: self, action: #selector(ShowView.tapEvent))
  tap.cancelsTouchesInView = false
  self.addGestureRecognizer(tap)
 }
 func tapEvent()
 {
  muFunc!(0)
 }
 func didSelectedToHideView(hideFunc:@escaping (Int)->Void)
 {
  muFunc = hideFunc
 }
 required init?(coder aDecoder: NSCoder) {
  fatalError("init(coder:) has not been implemented")
 }
}
class ViewController: UIViewController
{
 let WIDTH = UIScreen.main.bounds.size.width
 let HEIGHT = UIScreen.main.bounds.size.height
 override func viewDidLoad()
 {
  super.viewDidLoad()
 }
 @IBAction func selectedToDoSomething(_ sender: UIButton)
 {
  let showView = 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)
 }
 override func didReceiveMemoryWarning()
 {
  super.didReceiveMemoryWarning()
  // Dispose of any resources that can be recreated.
 }
}

总结

以上所述是小编给大家介绍的swift闭包和OC block类型的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# swift闭包和block  # swift  # 闭包  # block  # Swift 基本数据类型详解总结  # Swift 字符串类型及常用方法详解总结  # Swift 5.1 之类型转换与模式匹配的教程详解  # Swift如何使用类型擦除及自定义详解  # Swift中非可选的可选值类型处理方法详解  # Swift 图表使用Foudation库中测量类型详解  # 小编  # 就在  # 在此  # 是怎么  # 给大家  # 写了  # 所述  # 可以任意  # 给我留言  # 感谢大家  # 比了  # 返回值  # 测试一下  # 疑问请  # 有任何  # 网上  # 是闭包  # brush  # class  # java 


相关文章: 如何在建站宝盒中设置产品搜索功能?  如何通过山东自助建站平台快速注册域名?  如何在阿里云高效完成企业建站全流程?  建站主机选哪家性价比最高?  威客平台建站流程解析:高效搭建教程与设计优化方案  ,柠檬视频怎样兑换vip?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  建站主机与服务器功能差异如何区分?  如何快速辨别茅台真假?关键步骤解析  如何在IIS中配置站点IP、端口及主机头?  建站之星3.0如何解决常见操作问题?  如何挑选最适合建站的高性能VPS主机?  如何在橙子建站中快速调整背景颜色?  大型企业网站制作流程,做网站需要注册公司吗?  如何快速生成橙子建站落地页链接?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何配置FTP站点权限与安全设置?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何在腾讯云免费申请建站?  电商网站制作价格怎么算,网上拍卖流程以及规则?  广州建站公司哪家好?十大优质服务商推荐  建站之星会员如何解锁更多建站功能?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何做静态网页,sublimetext3.0制作静态网页?  南宁网站建设制作定制,南宁网站建设可以定制吗?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  网站制作公司,橙子建站是合法的吗?  如何通过wdcp面板快速创建网站?  建站之星后台密码遗忘?如何快速找回?  如何快速搭建高效简练网站?  如何在万网主机上快速搭建网站?  ppt制作免费网站有哪些,ppt模板免费下载网站?  建站主机类型有哪些?如何正确选型  建站主机如何安装配置?新手必看操作指南  非常酷的网站设计制作软件,酷培ai教育官方网站?  智能起名网站制作软件有哪些,制作logo的软件?  小程序网站制作需要准备什么资料,如何制作小程序?  如何高效配置香港服务器实现快速建站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  盘锦网站制作公司,盘锦大洼有多少5G网站?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  电商平台网站制作流程,电商网站如何制作?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  广东企业建站网站优化与SEO营销核心策略指南  如何通过可视化优化提升建站效果? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。