久久久久久久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機型的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面
主站蜘蛛池模板: 国产在线小视频 | 2018天天干天天操 | 日韩一区二区三区在线视频 | 国产电影一区二区在线观看 | 欧美精品一区二区三区在线四季 | 中文字字幕一区二区三区四区五区 | 久久中文一区二区 | 91久久久久久久久 | 亚洲一区二区三区福利 | 少妇黄色 | .国产精品成人自产拍在线观看6 | 亚洲精品视频在线播放 | 91在线播 | 日本在线播放 | 草草草影院 | 欧美伊人 | 伊人色综合久久久天天蜜桃 | 亚洲精品不卡 | 91新视频| 国产伦精品一区二区 | 中文字幕日韩欧美一区二区三区 | 国产精品日韩欧美一区二区三区 | 亚洲一区二区精品视频 | 色偷偷噜噜噜亚洲男人 | 午夜影院污 | 中文精品一区二区 | 日本精品在线观看 | 91视频电影 | 自拍偷拍精品 | 91偷拍精品一区二区三区 | 久久精品一区二区视频 | 91豆花视频 | 成人免费视频在线观看 | 午夜精品久久 | 全免费a级毛片免费看视频免 | 日本中文字幕一区 | 人操人免费视频 | 亚洲国产高清高潮精品美女 | 精品1区2区3区| 色偷偷888欧美精品久久久 | 久久最新精品 |