IOS中的知識點

堆與棧的區(qū)別

一、堆??臻g分配區(qū)別:

1、棧(操作系統(tǒng)):由操作系統(tǒng)自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧;

2、堆(操作系統(tǒng)): 一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時可能由OS回收,分配方式倒是類似于鏈表。

二、堆棧緩存方式區(qū)別:

1、棧使用的是一級緩存, 他們通常都是被調(diào)用時處于存儲空間中,調(diào)用完畢立即釋放;

2、堆是存放在二級緩存中,生命周期由虛擬機的垃圾回收算法來決定(并不是一旦成為孤兒對象就能被回收)。所以調(diào)用這些對象的速度要相對來得低一些。

三、堆棧數(shù)據(jù)結(jié)構(gòu)區(qū)別:

堆(數(shù)據(jù)結(jié)構(gòu)):堆可以被看成是一棵樹,如:堆排序;

棧(數(shù)據(jù)結(jié)構(gòu)):一種先進后出的數(shù)據(jù)結(jié)構(gòu)。

instancetype和id的區(qū)別

區(qū)別1:

在ARC(Auto Reference Count)環(huán)境下:

instancetype用來在編譯期確定實例的類型,而使用id的話,編譯期不檢查類型, 運行時檢查類型.

在MRC(Manual Reference Count)環(huán)境下:

instancetype和id一樣,不做具體類型檢查

區(qū)別2:

id可以作為方法的參數(shù),但instancetype不可以

instancetype只適用于初始化方法和便利構(gòu)造器的返回值類型

MRC與ARC的區(qū)別

ARC:自動管理內(nèi)存計數(shù)器。不需要程序員管理內(nèi)存,編譯器會在恰當?shù)臅r候給我們填上reatin、release等代碼。

注意:oc中的ARC和JAVa里面的垃圾回收機制不太一樣,Java中的垃圾回收機制是系統(tǒng)幫忙干的,而oc中的ARC是編譯器干的。

ARC是編譯器特性(編譯器會在恰當?shù)臅r候給我們填上reatin、release等代碼),不是運行時特性。

MRC:手動管理內(nèi)存計數(shù)器。需要程序要自己恰當?shù)牡胤阶约簩懮蟫elease和retain代碼。

野指針和空指針的區(qū)別

野指針:表示指針指向了一個被釋放的對象,也稱“僵尸對象”。只要給野指針發(fā)送消息,程序就會報錯。

空指針:指向沒有儲存控件的指針(就是指針設(shè)置為nil)。我們一般為了避免給野指針發(fā)送消息,當一個對象被釋放后我們都將這個對象的指針設(shè)置為空指針。給空指針發(fā)送消息不會報錯

property修飾符

readonly:只讀的,修飾的屬性只自動生成getter方法

readwrite :可讀可寫的,修飾的屬性可以自動生成getter/setter方法。默認情況下是readwrite

retain:自動幫我們生成getter/setter方法,并且生成的是內(nèi)存管理代碼(引用計數(shù)器+1)。

assign:不會自動幫助我們在setter/getter方法中生成內(nèi)存管理代碼,僅僅生成普通的getter與setter方法

getter:可以給getter方法起一個名字

setter:可以給setter方法起一個名字

atomic:原子性,性能比較低,安全性高。(只能執(zhí)行一條線程)

nonatomic:非原子性,性能比較高,安全性比較差 (可以同時進行多條線程)

+(void)load和+(void)initialize的區(qū)別

+(void)load:表示程序開始加載到內(nèi)存時調(diào)用? ? 2.自身未定義,不會沿用父類的方法。3.類別中的定義全部執(zhí)行,先執(zhí)行類自身的實現(xiàn),再執(zhí)行類別(Category)中的實現(xiàn)

+(void)initialize:便是該類第一次使用將被調(diào)用? 2.自身未定義,hui沿用父類的方法。3.類別中的定義,會執(zhí)行最后一個,并且覆蓋類的方法

weak和strong assign

strong:強引用,用于OC對象,相當于MRC中的reatin,引用計數(shù)器加1

weak:弱引用,用于OC對象,相當于MRC中的assign,引用計數(shù)器不加1

assign:用于一般數(shù)據(jù)類型,和MRC中的assign一樣,引用計數(shù)器不加1


最后編輯于
?著作權(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)容

  • 我獨自坐在靜謐的陰影中, 我一定要呼喊你的名字。 我一定要呼喊你的名字, 不用任何言詞, 也不為任何目的。 因為我...
    姓尹者不遇閱讀 334評論 0 0
  • 前幾天,《夏至未至》終于迎來了大結(jié)局,這部讓我扎心了整個青春的小說終于在電視劇中給了最愛的陸之昂一個美好的結(jié)局。劇...
    公子阿朱閱讀 809評論 1 2

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