iOS面試基礎(chǔ)知識點(一) 內(nèi)存相關(guān)

什么是ARC?

ARC即Automatic Reference Counting,它是現(xiàn)有的Objective-C的內(nèi)存管理機制。該機制下,代碼中會自動添加retain/release,原本需要手動處理引用計數(shù)的代碼交由編譯器自動完成。

什么是MRC?

MRC即Manual Reference Counting,手動通過retain為對象獲取內(nèi)存,并用release釋放內(nèi)存。

ARC與Garbage Collection的區(qū)別?

Garbage Collection在運行時管理內(nèi)存,可以解決retain cycle,而ARC在編譯時管理內(nèi)存。

循環(huán)引用?

循環(huán)引用是指兩個或兩個以上對象相互之間互相強引用,導(dǎo)致所有對象無法被釋放的現(xiàn)象。是內(nèi)存泄漏的一種情況。實際使用中,最為常見的是block的應(yīng)用。

關(guān)鍵詞,引用類型?

strong:表示指向并擁有該對象。其修飾的對象的引用計數(shù)會+1.該對象只要引用計數(shù)不為0,就不會被銷毀??梢酝ㄟ^強行設(shè)為nil進(jìn)行銷毀。

weak:表示指向但不擁有該對象。其修飾的對象引用計數(shù)不會增加,會自行在內(nèi)存中被銷毀。使用較多的是定義一個代理。

assign:主要用于修飾基本數(shù)據(jù)類型,如int、float,這些值主要存在于棧中。

copy:與strong類似。不同的是strong的復(fù)制是多個指針指向同一個地址,而copy的復(fù)制會在內(nèi)存中復(fù)制一份對象,指針是指向不同的地址。copy一般用在修飾有對應(yīng)可變類型的不可變對象上,類似NSString

weak一般用于修飾對象,assign一般用來修飾基礎(chǔ)數(shù)據(jù)類型。原因就是assign修飾的對象被釋放后,指針的地址依然存在,造成“野指針”,在堆上容易造成奔潰。而棧上的內(nèi)存系統(tǒng)會自動釋放,不會造成“野指針”。

在Objective-C中,基本數(shù)據(jù)類型默認(rèn)的關(guān)鍵字是atomic,readwrite和assign;普通屬性的默認(rèn)關(guān)鍵字是atomic,readwrite和strong。

atomatic和nonatomic的比較?

atomatic修飾的對象能保證setter和getter的完整性,任何線程訪問它都可以得到一個完整的初始化的對象。但因為要保證操作的完成,所以速度較慢。比nonatomic安全,但也不是絕對的線程安全。

nonatomic修飾的對象不保證setter、getter的完整性,所以,當(dāng)多個線程訪問它的時候,他可能會返回一個未初始化的對象。所以,相較atomatic而言,速度更快,線程也是不安全的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,649評論 1 32
  • Cocoa內(nèi)存管理機制 (1)當(dāng)你使用new、alloc、copy方法創(chuàng)建一個對象時,該對象的保留計數(shù)器值為1.當(dāng)...
    John_LS閱讀 2,865評論 0 6
  • 內(nèi)存管理的基本范圍和概念. 程序運行過程中藥創(chuàng)建大量的對象, 和其他高級語言類似,在ObjC中對象存儲在堆區(qū),程序...
    ValienZh閱讀 962評論 0 2
  • ①飯團(tuán) 水蜜桃 青提 番茄 看視頻看到有人吃飯團(tuán),想到家里還剩了幾片之前買的海苔片,整起來整起來! 雖然這個米飯被...
    愛吃紅薯的老鼠閱讀 316評論 0 1
  • 你殺了人,你有罪 存在主義? 社會現(xiàn)象? 司法公正? 十八的我不想從這些角度去挖掘。 wh...
    Liquricee閱讀 496評論 0 2

友情鏈接更多精彩內(nèi)容