久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

swift閉包和OC block類型的使用

這篇文章主要介紹了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類型的使用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對html5模板網網站的支持!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

這篇文章主要給大家介紹了關于RxSwift學習教程之類型對象Subject的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關于RxSwift學習教程之Observable的相關資料,文中詳細的給大家介紹了關于新建Observable、訂閱Observable和取消訂閱并消除內存泄漏等相關的內容,需要的朋友可以
RxSwift是Swift函數響應式編程的一個開源庫,由Github的ReactiveX組織開發,維護。下面這篇文章主要給大家介紹了關于RxSwift學習之基礎篇的相關資料,文中通過示例代碼介紹的非常詳細,需
這篇文章主要為大家詳細介紹了Swift4.0 Array數組的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
CATransition動畫主要在過渡時使用,比如兩個頁面層級改變的時候添加一個轉場效果。CATransition分為兩類,一類是公開的動畫效果,一類是非公開的動畫效果。這篇文章主要給大家介紹了
近日,iPhone X的發布在人們群眾引起了很大的轟動,下面這篇文章主要給大家介紹了關于利用Swift如何判斷iPhone X機型的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面
主站蜘蛛池模板: 黄色成人亚洲 | 欧美在线a | 欧美在线高清 | 国产精久久久 | 日韩中文在线 | 在线视频一区二区三区 | 成人免费看片 | 色综合激情 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 久久精品av麻豆的观看方式 | 国产精品精品视频一区二区三区 | 91麻豆精品国产91久久久资源速度 | 日韩免费一区 | 久久久久亚洲av毛片大全 | 成人av播放 | 久久亚洲一区 | 欧美在线视频一区二区 | 久久久久国产精品 | 在线免费观看毛片 | 自拍偷拍小视频 | 国产成人网| 亚洲三区在线观看 | 在线免费观看亚洲 | 国产精品欧美日韩 | 亚洲精品一区二区三区中文字幕 | 一区二区三区国产好的精 | 在线免费91| 呦呦在线视频 | 成人国产精品久久 | 欧美www在线| 国产在线精品一区二区三区 | 日本一区二区在线视频 | 密室大逃脱第六季大神版在线观看 | 成人超碰在线 | 久久亚洲一区 | 中文字幕日韩一区 | 91精品国产综合久久久久久漫画 | 欧美人妇做爰xxxⅹ性高电影 | 亚洲人成网亚洲欧洲无码 | 国产91久久久久久久免费 | 日韩视频精品在线 |