在今天的科技時代,你無法想象沒有記憶的技術進步。內存是指用於在設備上存儲數據的硬件。iPhone在數據存儲方麵有兩種選擇:磁盤和隨機存取存儲器(RAM)。然而,當一個應用程序在iPhone上運行時,一個包含所有可執行指令的文件被加載到RAM中。
因為所有類的對象都存儲在堆中,應用程序需要一些RAM來保持運行。維護這個堆內存的過程稱為內存管理。它包含堆對象生命周期管理,確保在不再需要時刪除對象,從而節省內存。另一方麵,在Swift中,引用類型是在堆內存上分配的,盡管值類型不是。
維護堆內存是至關重要的,因為我們的對象足夠大,如果不清除它們,就會占用大量內存。如果應用程序繼續耗盡內存,它可能會崩潰。
Swift中的自動引用計數(ARC)
自動引用計數(ARC)是管理內存(ARC)的一種更智能的方法。當您不需要類實例時,它會自動釋放它們的內存。正如我們在本文中已經提到的,自動引用計數(ARC)隻適用於類實例。在Swift中,結構和枚舉是值類型;因此,他們的實例沒有被計算在內。
當在我們的應用程序代碼中創建一個實例時,ARC分配一個內存塊來保存關於它的信息。包括實例的類型以及與該實例關聯的任何已保存屬性的值。
當實例不再需要時,ARC釋放內存。在這種情況下,分配給該實例的RAM被釋放並用於其他原因。這還確保在實例不使用時,它們不會占用不必要的內存空間。
然而,如果ARC釋放一個仍然在使用的實例,你將無法恢複它的任何屬性或方法。但是,如果您嚐試這樣做,程序將崩潰。
此外,您必須確保實例在使用時沒有被釋放。由於這個原因,ARC會跟蹤當前引用每個類實例的屬性、常數和變量的數量。隻要至少有一個對實例的活動引用,ARC就不會釋放它。為此,每當屬性、常量或變量引用實例時,它都會創建對實例的強引用。這個引用稱為強引用,因為隻要強引用存在,它就會阻止該實例被釋放。