我有這些引數只初始化一次,如下所示:
private let dateFormatter: DateFormatter = {
let formatter = DateFormatter()
...
return formatter
}()
我想了解更多關于這些型別的引數,但不確定你怎么稱呼它們?它們是執行緒安全的(假設型別是)?
uj5u.com熱心網友回復:
我不認為他們有什么特別的名字。您通過定義一個匿名函式并呼叫該函式來初始化一個變數,因此我將其稱為定義并呼叫初始化程式。但這是非官方的。
該構造非常常見。就像這里一樣,它特別有用,可以確保只創建和配置一次(日期格式化程式的創建成本很高)。它沒有特殊的執行緒相關特性。它與您省略的代碼一樣是執行緒安全的。
需要注意的一點是,如果這是一個屬性,則省略的代碼不能參考,self除非您更改let為lazy var. (唉,沒有lazy let;我認為這是語言中的一個嚴重漏洞。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/521066.html
標籤:IOS迅速
