Swift的懶載入與閉包

2021-10-06 20:37:08 字數 1710 閱讀 5765

閉包

閉包和oc中的block非常相似,oc中的block類似於匿名函式,閉包是用來定義函式,他們的作用都是 儲存一段**,在需要的時候執行。

// oc 中的block

void (

^myblock)

(int a,int b)

;myblock =

^(int a,int b)

// swift 閉包

閉包簡化 - 尾隨閉包

func

somefunctionthattakesaclosure

(closure:()

->

void

)// 以下是不使用尾隨閉包進行函式呼叫

somefunctionthattakesaclosure()

// 以下是使用尾隨閉包進行函式呼叫

somefunctionthattakesaclosure()

somefunctionthattakesaclosure

1.如果沒有引數, 沒有返回值,

in和in之前的東西可以省略

2.如果閉包是函式的最後乙個引數, 可以寫在(

)後面 -- 尾隨閉包

3.如果只有乙個閉包引數, 那麼(

)也可以省略 -- 尾隨閉包

懶載入
lazy

var table:

uilabel=(

)var bb:((

)->

uilabel)=

lazy

var nihao:

uilabel

=self.bb

()lazy

var nihaohao:

uilabel=(

)

需要的時候初始化記憶體,對記憶體開銷較小,節省內部資源

**初始化放在一起,**塊比較好劃分,方便別人和自己閱讀

import

uikit

class

viewcontroller

:uiviewcontroller()

let demofunc =

// 注意懶載入一定要用var

lazy

var datalist2:

[string]=

self

.demofunc()

override

func

touchesbegan

(touches:

set<

uitouch

>

, withevent event:

uievent?)

}列印結果:

我懶載入了

["zj"

,"hq"

,"wl"][

"zj"

,"hq"

,"wl"

]我懶載入了

["ny"

,"ny1"

,"ny2"

]我懶載入了

["ny"

,"ny1"

,"ny2"][

"ny"

,"ny1"

,"ny2"

]

懶載入格式:

lazy

var 變數: 型別 =

()

參考原文

Swift閉包與簡化

定義乙個陣列,使用sort函式對其排序 let names chris alex ewa barry daniella 完整形式 names.sort 尾隨閉包形式 names.sort 如果閉包表示式的引數型別已知,可省略 names.sort 如果閉包表示式的返回型別已知,可省略 names.s...

Swift中的延遲載入 懶載入

而在swift中,你只需一行 即可實現此機制 lazy var players string 簡單 簡潔,直入主題。但你得記住,你必須使用var關鍵字來定義延遲載入的屬性,不能使用let關鍵字,因為常量必須在例項構建時賦值。lazy var players string 如果你願意,你也可以使用例項...

swift學習之懶載入

在移動端開發過程之中,懶載入隨處可見。在swift中,蘋果推薦使用懶載入,如何實現懶載入呢?關鍵字 lazy 格式 定義乙個變數時,在前面使用lazy修飾,後面等於乙個閉包 注意 只能用var,而不能使用let,閉包後面必須跟著 定義乙個字串陣列 lazy var liststring string...