import
uikit
class
viewcontroller:
uiviewcontroller
else }
該閉包引用了
self
即強引用了
htmlelement
例項,
lazy var ashtml: void->string
該變數又強引用了閉包 */
paragraph=
nil//
不會觸發
deinit
析構函式
//解決閉包引起的迴圈強引用 //
在定義閉包時同時定義捕獲列表作為閉包的一部分,通過這種方式可以解決閉包和類例項之間的迴圈強引用。捕獲列表定義了閉包體內捕獲乙個或者多個引用型別的規則 //
捕獲列表中的每一項都由一對元素組成,乙個元素是
weak
或unowned
關鍵字,另乙個元素是類例項的引用。這些項在方括號中用逗號分開 //
如果閉包有引數列表和返回型別,把捕獲列表放在它們前面
varparagraph2:
htmlelement
?=htmlelement
(name:
"p", text:
"hello world")
(paragraph2!.
ashtml2
())//p hello world p
//p is being deinit //
注意:如果**獲的引用絕對不會變為
nil,應該用無主引用,而不是弱引用,弱引用總是可選型別,並且當引用的例項被銷毀後,弱引用的值會自動置為
nil。 }
} class
htmlelement
else }
letname:
string
lettext:
string?
lazy
varashtml:
void
->
string
= else }
init
(name:
string
,text:
string
?=nil)
deinit
} //lazy var someclosure: void -> string =
swift2 0 學習筆記Two
var myarray 1,4,6,5,2 var sc 0 for str in myarray sc 1 print myarray,string sc 1,4,16,15,2 5 let optionalstr string?hello world print optionalstr nil ...
swift2 0 學習筆記four
override func viewdidload one two three let mychatacters character d l g let str string mychatacters print str dlg 建立乙個帶有預設值的陣列 let tt double count 6 ...
swift2 0 學習筆記Seventeen
import uikit 結構體和列舉是值型別 值型別被賦予給乙個變數 常量或者被傳遞給乙個函式的時候 其值會被拷貝。struct blackjackcard 巢狀定義列舉 rank enum rank int varvalues values blackjackcard 的屬性和方法 letran...