麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > iOS > 正文

iOS開發中Swift逃逸閉包知識

2019-10-21 18:41:42
字體:
來源:轉載
供稿:網友

逃逸閉包必須滿足下面2個條件:

1、閉包作為一個參數傳到函數中

2、閉包在函數返回之后才執行

需要在參數前面加入標注: @escaping,用來指明這個閉包是允許“逃逸”出這個函數的。

注意:將一個閉包標記為 @escaping 意味著你必須在閉包中顯式地引用

import UIKit/** 逃逸閉包滿足下面2個條件: * 1、handle閉包作為一個參數傳到函數payRequest中 * 2、并且handle閉包在函數返回之后才執行 * 需要在參數前面加入標注: @escaping,用來指明這個閉包是允許“逃逸”出這個函數的 * 注意:將一個閉包標記為 @escaping 意味著你必須在閉包中顯式地引用 self */func payRequest(handle:@escaping (Data?, URLResponse? ,Error?) -> Void) {  let urlStr = URL(string: "http://www.baidu.com")  let session = URLSession(configuration: .default)  session.dataTask(with: urlStr!, completionHandler: handle)}func someFunctionWithNonescapingClosure(closure: () -> Void) {  closure()}class SomeClass {  var x = 10  func doSomething() {    payRequest { (data, resp, error) in      x = 100 // 此處編譯錯誤,必須顯式地引用 self    }    someFunctionWithNonescapingClosure { x = 200 }  }}

在Swift標準庫中,有很多這種類型的閉包,比如下面的異步請求的方法:

open func dataTask(with request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDataTask

open func dataTask(with url: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDataTask

都符合文章開頭提到的逃逸閉包的形成條件。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 网站毛片| 精品国产高清一区二区三区 | 精品一区二区三区日本 | 欧美18videos性处按摩 | 7m视频成人精品分类 | 亚洲性生活视频 | asian裸体佳人pics | 欧美成人三级大全 | 日本娇小videos高潮 | 一区二区精品视频 | 中文在线观看www | 久久国产乱子伦精品 | 久久久久久久久久网站 | 亚洲精品 欧美 | 黄色伊人网站 | 91懂色| 亚洲特黄a级毛片在线播放 久久久入口 | 成人在线精品视频 | 亚洲一区二区网址 | av成人在线电影 | 成人黄视频在线观看 | 欧日韩在线视频 | 91成人免费版 | 久久久99精品视频 | 国产精品av久久久久久网址 | 日韩1区| 泰剧19禁啪啪无遮挡大尺度 | 欧美三日本三级少妇三级99观看视频 | 中国嫩模一级毛片 | 免费国产成人高清在线看软件 | 午夜网站视频 | 日本xxxx色视频在线观看免费, | 一级免费在线视频 | 午夜在线视频一区二区三区 | 在线观看免费污视频 | 欧美成人精品欧美一级乱黄 | 国产精品久久久久免费视频 | 中文字幕国产一区 | 日本精品免费观看 | 可以看毛片的网址 | 免费在线观看亚洲 |