新聞中心
Object-C的內(nèi)存管理經(jīng)歷過2個階段:手動引用計(jì)數(shù)內(nèi)存管理MRC和自動引用計(jì)數(shù)內(nèi)存引用管理ARC-MRC就是由程序員自己負(fù)責(zé)對象管理生命周期,負(fù)責(zé)對象的創(chuàng)建和銷毀,ARC的程序員不用關(guān)心對象內(nèi)存釋放的問題,編譯器在編譯的時(shí)候在合適的代碼位置插入內(nèi)存釋放代碼。
Swift在內(nèi)存管理方面吸收了OC的先進(jìn)思想,采用了ARC內(nèi)存管理模式
Swift中的內(nèi)存對象管理是對引用對象類型的管理,即對類所創(chuàng)建的對象采用ARC管理,而對于值類型,如整型,浮點(diǎn)型,布爾型,字符串,元組,集合,枚舉和結(jié)構(gòu)體,是由處理器自動管理,程序員不需要管理它們的內(nèi)存
PS:
以JAVA 和 C# 為代表的內(nèi)存垃圾回收機(jī)制,程序員不用關(guān)心內(nèi)存釋放的問題,這種方式在后臺有一個線程,負(fù)責(zé)檢查已經(jīng)不再使用的對象,將其釋放,由于在后臺有一個線程運(yùn)行,所以會影響性能。
以C++和C為代表的手動內(nèi)存管理模式,使用起來比較麻煩,經(jīng)常導(dǎo)致內(nèi)存泄露和內(nèi)存過度釋放等問題。
一、引用計(jì)數(shù)
每個類創(chuàng)建的對象都有一個內(nèi)部計(jì)數(shù)器,這個計(jì)數(shù)器根據(jù)對象的引用次數(shù),稱為引用計(jì)數(shù)RC,當(dāng)對象被創(chuàng)建的時(shí)候,引用計(jì)數(shù)為1,每次對象被引用的時(shí)候會使其引用數(shù)加1,如果不需要的時(shí)候,對象引用斷開(賦值為nil),其引用計(jì)數(shù)減1,當(dāng)對象的引用計(jì)數(shù)為0的時(shí)候,對象的內(nèi)存被釋放。
二、Swift自動引用計(jì)數(shù)示例
class Employee { var no:Int var name:String var job:String var salary:Double init(no:Int,name:String,job:String,salary:Double){ self.no = no self.name = name self.job = job self.salary = salary } deinit{ println("員工已經(jīng)被析構(gòu)了") } } var ref1:Employee? ref1 = Employee(no:10,name:"hey","IT",1000.0)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
名稱欄目:Swift內(nèi)存管理概述-創(chuàng)新互聯(lián)
當(dāng)前URL:http://www.ef60e0e.cn/article/ceoedo.html