iOS面試題2

1.Objective-C如何對(duì)內(nèi)存管理的,說說你的看法和解決方法?

每個(gè)對(duì)象都有一個(gè)引用計(jì)數(shù)器,每個(gè)新對(duì)象的計(jì)數(shù)器是1,當(dāng)對(duì)象的計(jì)數(shù)器減為0時(shí),就會(huì)被銷毀通過retain可以讓對(duì)象的計(jì)數(shù)器+1、release可以讓對(duì)象的計(jì)數(shù)器-1還可以通過autorelease pool管理內(nèi)存如果用ARC,編譯器會(huì)自動(dòng)生成管理內(nèi)存的代碼

2.內(nèi)存管理的幾條原則時(shí)什么?按照默認(rèn)法則.哪些方法生成的對(duì)象需要手動(dòng)釋放?在和property結(jié)合的時(shí)候怎樣有效的避免內(nèi)存泄露??

只要調(diào)用了alloc、copy、new方法產(chǎn)生了一個(gè)新對(duì)象,都必須在最后調(diào)用一次release或者autorelease?

只要調(diào)用了retain,都必須在最后調(diào)用一次release或者autorelease?

@property如果用了copy或者retian,就需要對(duì)不再使用的屬性做一次release操作?

如果用了ARC,另外討論

3.What is Singleton? (單例是什么)

單例:保證程序運(yùn)行過程中,永遠(yuǎn)只有一個(gè)對(duì)象實(shí)例?

目的是:全局共享一份資源、節(jié)省不必要的內(nèi)存開銷

4。對(duì)象是什么時(shí)候被釋放的??

每個(gè)對(duì)象都有一個(gè)引用計(jì)數(shù)器,每個(gè)新對(duì)象的計(jì)數(shù)器是1,當(dāng)對(duì)象的計(jì)數(shù)器減為0時(shí),就會(huì)被銷毀 ? ??

5.什么情況下會(huì)發(fā)生內(nèi)存泄漏和內(nèi)存溢出??

當(dāng)程序在申請(qǐng)內(nèi)存后,無法釋放已申請(qǐng)的內(nèi)存空間(例如一個(gè)對(duì)象或者變量使用完成后沒有釋放,這個(gè)對(duì)象一直占用著內(nèi)存),一次內(nèi)存泄露危害可以忽略,但內(nèi)存泄露堆積后果很嚴(yán)重,無論多少內(nèi)存,遲早會(huì)被占光。內(nèi)存泄露會(huì)最終會(huì)導(dǎo)致內(nèi)存溢出!?

當(dāng)程序在申請(qǐng)內(nèi)存時(shí),沒有足夠的內(nèi)存空間供其使用,出現(xiàn)out of memory;比如申請(qǐng)了一個(gè)int,但給它存了long才能存下的數(shù),那就是內(nèi)存溢出。

iOS 面試題1

iOS 面試題3

iOS 面試題4

iOS 面試題5

iOS 面試題6

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

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