swift學習筆記 七 自己主動引用計數

2021-09-06 19:11:23 字數 913 閱讀 7512

與object-c一樣,swift使用自己主動引用計數來跟蹤並管理應用使用的記憶體。當例項不再被使用時,及retaincount=0時,會自己主動釋放是理所占用的記憶體空間。

注:引用計數僅適用於類的例項,由於struct和enumeration屬於值型別,也就不牽涉引用,所以其儲存和管理方式並非引用計數。

當乙個例項被初始化時,系統會自己主動分配一定的記憶體空間,用於管理屬性和方法。當例項物件不再被使用時,其記憶體空間被收回。

swift中的引用型別分為三種,即strong強引用,weak弱引用和無主引用unwired

強引用保證在使用過程中,物件不會被釋放。但同一時候也導致了強引用環的出現。

強引用環是指兩個類例項彼此保持對方的強引用,是兩個例項彼此引用,不能被釋放的情況。

為解決強引用環的問題,能夠使用弱引用或者無主引用來實現。

使用weak弱引用的情況:對於生命週期中,引用可變為nil的例項,使用弱引用,在宣告前加入keywordweak;

使用無主引用的情況:對於初始化賦值後,引用再也不會被賦值為nil的情況,使用無主引用,在宣告時使用keywordunowned。

注意:1. weak:由於弱引用的屬性,在生命週期中,可能會被指為nil,所以必須被宣告為變數型別,不能是常量型別。

又由於弱引用可能沒有值,所以宣告時將其標為可選型別,「?」比如:weak var name:string?

2.unowned:因為無主型別在賦值後,不可能值為空,所以將其宣告為不可選型別。同一時候,在使用無主引用的時候,不須要展開,能夠直接訪問。

非可選型別變數不能被賦值為nil,所以在例項被銷毀時,不能將其置為nil。

3.當例項被銷毀後,試圖訪問該例項的無主引用會觸發執行時錯誤。使用無主引用時請確保引用始終指向乙個未銷毀的例項。 上面的非法操作會百分百讓應用崩潰,不會發生無法預期的行為。因此,你應該避免這樣的情況。 

Swift2 2 學習筆記 七

在尖括號裡來寫乙個名字來建立乙個泛型函式或者型別 func repeatitem item item,numberoftimes int item repeatitem knock numberoftimes 4 建立泛型類,列舉和結構體 case none var possibleinteger ...

C 學習筆記(七) 引用

作用 給變數起別名 語法 資料型別 別名 原名 int a 10 int b a b 20 此時a b 20引用必須初始化 int b a int c 未初始化引用一旦初始化後就不能更改 引用必須引一塊合法的記憶體空間 int ref 10 錯誤操作 const int ref 10 正確操作,相當...

swift學習筆記 七 自動引用計數

與object c一樣,swift使用自動引用計數來跟蹤並管理應用使用的記憶體。當例項不再被使用時,及retaincount 0時,會自動釋放是理所占用的記憶體空間。注 引用計數僅適用於類的例項,因為struct和enumeration屬於值型別,也就不牽涉引用,所以其儲存和管理方式並不是引用計數。...