閉包
閉包和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...