欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS開發(fā)中Swift逃逸閉包知識

 更新時間:2018年02月11日 10:38:27   作者:sz_vcp2007  
這篇文章主要介紹了iOS開發(fā)中Swift逃逸閉包的相關(guān)知識點以及需要注意的地方,需要的朋友收藏下吧。

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

1、閉包作為一個參數(shù)傳到函數(shù)中

2、閉包在函數(shù)返回之后才執(zhí)行

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

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

import UIKit

/** 逃逸閉包滿足下面2個條件:
 * 1、handle閉包作為一個參數(shù)傳到函數(shù)payRequest中
 * 2、并且handle閉包在函數(shù)返回之后才執(zhí)行
 * 需要在參數(shù)前面加入標注: @escaping,用來指明這個閉包是允許“逃逸”出這個函數(shù)的
 * 注意:將一個閉包標記為 @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

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

相關(guān)文章

  • iOS微信支付開發(fā)案例

    iOS微信支付開發(fā)案例

    這篇文章主要為大家詳細介紹了iOS微信支付開發(fā)案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • iOS 獲取設備唯一標示符的方法詳解

    iOS 獲取設備唯一標示符的方法詳解

    本篇文章主要介紹了iOS 獲取設備唯一標示符的方法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • NSMutable?對象的坑解決分析

    NSMutable?對象的坑解決分析

    這篇文章主要為大家介紹了NSMutable?對象的坑解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 一個iOS上的秒表小應用的實現(xiàn)方法分享

    一個iOS上的秒表小應用的實現(xiàn)方法分享

    這篇文章主要介紹了一個iOS上的秒表小應用的實現(xiàn)方法分享,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-10-10
  • iOS使用CIFilter生成二維碼

    iOS使用CIFilter生成二維碼

    這篇文章主要介紹了iOS使用CIFilter生成二維碼,二維碼的生成和讀取只需要使用Core Image框架和AVFoundation框架就能輕松實現(xiàn)。在這里,我們主要介紹二維碼的生成。有興趣的可以了解一下
    2017-12-12
  • iOS實現(xiàn)從背景圖中取色的代碼

    iOS實現(xiàn)從背景圖中取色的代碼

    這篇文章主要介紹了iOS實現(xiàn)從背景圖中取色的代碼,感興趣的小伙伴們可以參考一下
    2016-03-03
  • iOS給密碼進行加密的方法

    iOS給密碼進行加密的方法

    這篇文章主要介紹了iOS給密碼進行加密的方法,需要的朋友可以參考下
    2017-06-06
  • Mac OSX 打開原生自帶讀寫NTFS功能(圖文)

    Mac OSX 打開原生自帶讀寫NTFS功能(圖文)

    這篇文章主要介紹了Mac OSX 打開原生自帶讀寫NTFS功能(圖文),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • iOS開發(fā)中使app獲取本機通訊錄的實現(xiàn)代碼實例

    iOS開發(fā)中使app獲取本機通訊錄的實現(xiàn)代碼實例

    這篇文章主要介紹了iOS開發(fā)中使app獲取本機通訊錄的實現(xiàn)代碼實例,主要用到了AddressBook.framework和AddressBookUI.framework,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-01-01
  • IOS開發(fā)仿微信右側(cè)彈出視圖實現(xiàn)

    IOS開發(fā)仿微信右側(cè)彈出視圖實現(xiàn)

    這篇文章主要介紹了IOS開發(fā)仿微信右側(cè)彈出視圖實現(xiàn)的相關(guān)資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣類似的功能,需要的朋友可以參考下
    2017-10-10

最新評論