swift2 0 學習筆記Thirteen

2021-07-12 07:18:20 字數 1216 閱讀 2462

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")

print

(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...