2019-12-19

1冲粤、分類和擴展有什么區(qū)別淫茵?

分類中原則上只能增加方法爪瓜;類別是在運行時添加到類中;分類方法未實現(xiàn)匙瘪,編譯器也不會報警告铆铆;分類方法與原類中相同會優(yōu)先調(diào)用分類。

類擴展不僅可以增加方法丹喻,還可以增加實例變量薄货;類擴展是在編譯階段被添加到類中

2、Autoreleasepool所使用的數(shù)據(jù)結(jié)構(gòu)是什么碍论?

在沒有手加Autorelease Pool的情況下谅猾,Autorelease對象是在當前的runloop迭代結(jié)束時釋放的,而它能夠釋放的原因是系統(tǒng)在每個runloop迭代中都加入了自動釋放池Push和Pop

AutoreleasePool并沒有單獨的結(jié)構(gòu)鳍悠,而是由若干個AutoreleasePoolPage以雙向鏈表的形式組合而成(分別對應(yīng)結(jié)構(gòu)中的parent指針和child指針)税娜。

3、iOS 中內(nèi)省的幾個方法贼涩?class方法和objc_getClass方法有什么區(qū)別?

判斷對象類型:

-(BOOL) isKindOfClass: 判斷是否是這個類或者這個類的子類的實例

-(BOOL) isMemberOfClass: 判斷是否是這個類的實例

判斷對象or類是否有這個方法

-(BOOL) respondsToSelector: 判讀實例是否有這樣方法

+(BOOL) instancesRespondToSelector: 判斷類是否有這個方法

object_getClass:獲得的是isa的指向

self.class:當self是實例對象的時候巧涧,返回的是類對象,否則則返回自身遥倦。

類方法class,返回的是self占锯,所以當查找meta class時袒哥,需要對類對象調(diào)用object_getClass方法


4、鏈表和數(shù)組的區(qū)別是什么消略?插入和查詢的時間復(fù)雜度分別是多少堡称?

1、從邏輯結(jié)構(gòu)角度來看:

數(shù)組必須事先定義固定的長度(元素個數(shù))艺演,不能適應(yīng)數(shù)據(jù)動態(tài)地增減的情況却紧。當數(shù)據(jù)增加時桐臊,可能超出原先定義的元素個數(shù);當數(shù)據(jù)減少時晓殊,造成內(nèi)存浪費断凶。

鏈表動態(tài)地進行存儲分配,可以適應(yīng)數(shù)據(jù)動態(tài)地增減的情況巫俺,且可以方便地插入认烁、刪除數(shù)據(jù)項。(數(shù)組中插入介汹、刪除數(shù)據(jù)項時却嗡,需要移動其它數(shù)據(jù)項)

2、數(shù)組元素在棧區(qū)嘹承,鏈表元素在堆區(qū)窗价;

3、從內(nèi)存存儲角度來看:

(靜態(tài))數(shù)組從棧中分配空間, 對于程序員方便快速,但自由度小叹卷。

鏈表從堆中分配空間, 自由度大但申請管理比較麻煩舌镶。

數(shù)組利用下標定位,時間復(fù)雜度為O(1)豪娜,鏈表定位元素時間復(fù)雜度O(n)餐胀;

數(shù)組插入或刪除元素的時間復(fù)雜度O(n),鏈表的時間復(fù)雜度O(1)瘤载。

5否灾、說說你理解weak屬性?

Runtime維護了一個weak表鸣奔,用于存儲指向某個對象的所有weak指針墨技。weak表其實是一個hash(哈希)表,Key是所指對象的地址挎狸,Value是weak指針的地址(這個地址的值是所指對象的地址)數(shù)組扣汪。

1、初始化時:runtime會調(diào)用objc_initWeak函數(shù)锨匆,初始化一個新的weak指針指向?qū)ο蟮牡刂贰?/p>

2崭别、添加引用時:objc_initWeak函數(shù)會調(diào)用 objc_storeWeak() 函數(shù), objc_storeWeak() 的作用是更新指針指向恐锣,創(chuàng)建對應(yīng)的弱引用表茅主。

3夯秃、釋放時探赫,調(diào)用clearDeallocating函數(shù)。clearDeallocating函數(shù)首先根據(jù)對象地址獲取所有weak指針地址的數(shù)組妓湘,然后遍歷這個數(shù)組把其中的數(shù)據(jù)設(shè)為nil玷禽,最后把這個entry從weak表中刪除赫段,最后清理對象的記錄呀打。


1.實現(xiàn)weak后,為什么對象釋放后會自動為nil糯笙?

runtime 對注冊的類贬丛, 會進行布局,對于 weak 對象會放入一個 hash 表中炬丸。 用 weak 指向的對象內(nèi)存地址作為 key瘫寝,當此對象的引用計數(shù)為 0 的時候會 dealloc,假如 weak 指向的對象內(nèi)存地址是 a 稠炬,那么就會以 a 為鍵焕阿, 在這個 weak 表中搜索,找到所有以 a 為鍵的 weak 對象首启,從而設(shè)置為 nil 暮屡。

2.當weak引用指向的對象被釋放時,又是如何去處理weak指針的呢毅桃?

1褒纲、調(diào)用objc_release

2、因為對象的引用計數(shù)為0钥飞,所以執(zhí)行dealloc

3莺掠、在dealloc中,調(diào)用了_objc_rootDealloc函數(shù)

4读宙、在_objc_rootDealloc中彻秆,調(diào)用了object_dispose函數(shù)

5、調(diào)用objc_destructInstance

6结闸、最后調(diào)用objc_clear_deallocating,詳細過程如下:

a. 從weak表中獲取廢棄對象的地址為鍵值的記錄

b. 將包含在記錄中的所有附有 weak修飾符變量的地址唇兑,賦值為 nil

c. 將weak表中該記錄刪除

d. 從引用計數(shù)表中刪除廢棄對象的地址為鍵值的記錄

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市桦锄,隨后出現(xiàn)的幾起案子扎附,更是在濱河造成了極大的恐慌,老刑警劉巖结耀,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件留夜,死亡現(xiàn)場離奇詭異,居然都是意外死亡饼记,警方通過查閱死者的電腦和手機香伴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來具则,“玉大人,你說我怎么就攤上這事具帮〔├撸” “怎么了低斋?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長匪凡。 經(jīng)常有香客問我膊畴,道長,這世上最難降的妖魔是什么病游? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任唇跨,我火速辦了婚禮,結(jié)果婚禮上衬衬,老公的妹妹穿的比我還像新娘买猖。我一直安慰自己,他們只是感情好滋尉,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布玉控。 她就那樣靜靜地躺著,像睡著了一般狮惜。 火紅的嫁衣襯著肌膚如雪高诺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天碾篡,我揣著相機與錄音虱而,去河邊找鬼。 笑死开泽,一個胖子當著我的面吹牛牡拇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播眼姐,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼诅迷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了众旗?” 一聲冷哼從身側(cè)響起罢杉,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贡歧,沒想到半個月后滩租,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡利朵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年律想,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绍弟。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡技即,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出樟遣,到底是詐尸還是另有隱情而叼,我是刑警寧澤身笤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站葵陵,受9級特大地震影響液荸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜脱篙,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一娇钱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绊困,春花似錦文搂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至川梅,卻和暖如春疯兼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贫途。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工吧彪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丢早。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓姨裸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親怨酝。 傳聞我的和親對象是個殘疾皇子傀缩,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348