與object-c一樣,swift使用自動引用計數來跟蹤並管理應用使用的記憶體。當例項不再被使用時,及retaincount=0時,會自動釋放是理所占用的記憶體空間。
注:引用計數僅適用於類的例項,因為struct和enumeration屬於值型別,也就不牽涉引用,所以其儲存和管理方式並不是引用計數。
當乙個例項被初始化時,系統會自動分配一定的記憶體空間,用於管理屬性和方法。當例項物件不再被使用時,其記憶體空間被收回。
swift中的引用型別分為三種,即strong強引用,weak弱引用和無主引用unwired
強引用保證在使用過程中,物件不會被釋放。但同時也導致了強引用環的出現。
強引用環是指兩個類例項彼此保持對方的強引用,是兩個例項彼此引用,不能被釋放的情況。
為解決強引用環的問題,可以使用弱引用或者無主引用來實現。
使用weak弱引用的情況:對於生命週期中,引用可變為nil的例項,使用弱引用,在宣告前新增關鍵字weak;
使用無主引用的情況:對於初始化賦值後,引用再也不會被賦值為nil的情況,使用無主引用,在宣告時使用關鍵字unowned。
注意:1. weak:因為弱引用的屬性,在生命週期中,可能會被指為nil,所以必須被宣告為變數型別,不能是常量型別。
又因為弱引用可能沒有值,所以宣告時將其標為可選型別,「?」例如:weak var name:string?
2.unowned:由於無主型別在賦值後,不可能值為空,所以將其宣告為不可選型別。同時,在使用無主引用的時候,不需要展開,可以直接訪問。
非可選型別變數不能被賦值為nil,所以在例項被銷毀時,不能將其置為nil。
3.當例項被銷毀後,試圖訪問該例項的無主引用會觸發執行時錯誤。使用無主引用時請確保引用始終指向乙個未銷毀的例項。 上面的非法操作會百分百讓應用崩潰,不會發生無法預期的行為。因此,你應該避免這種情況。
swift學習筆記之自動引用計數
swift使用自動引用計數 arc 來管理應用程式的記憶體使用。這表示記憶體管理已經是swift的一部分,在大多數情況下,你並不需要考慮記憶體的管理。當例項並不再被需要時,arc會自動釋放這些例項所使用的記憶體。另外需要注意的 引用計數僅僅作用於類例項上。結構和列舉是值型別,而非引用型別,所以不能被...
swift學習筆記 七 自己主動引用計數
與object c一樣,swift使用自己主動引用計數來跟蹤並管理應用使用的記憶體。當例項不再被使用時,及retaincount 0時,會自己主動釋放是理所占用的記憶體空間。注 引用計數僅適用於類的例項,由於struct和enumeration屬於值型別,也就不牽涉引用,所以其儲存和管理方式並非引用...
swift自動引用計數
在少數情況下,arc為了能幫助你管理記憶體,需要更多的關於你的 之間關係的資訊 引用計數僅僅應用於類的例項,結構體和列舉型別是值型別,不是引用型別,也不是通過引用的方式儲存和傳遞 為了使之成為可能,無論你將例項賦值給屬性,常量或者是變數,屬性,常量或者變數,都會對此例項建立強引用。之所以稱之為強引用...