面試遇到的weak的點點滴滴

2021-08-27 18:26:00 字數 1069 閱讀 7515

從歷年weak看ios面試

2023年

面試官:**用weak還是strong?

我 :weak 。 

面試官:明天來上班吧

2023年

面試官:**為什麼用weak不用strong?

我 : 用strong會造成迴圈引用。

面試官:明天來上班吧

2023年

面試官:weak是怎麼實現的?

我 :weak其實是 系統通過乙個hash表來實現物件的弱引用

面試官:明天來上班吧

2023年

面試官:weak是怎麼實現的?

我 :runtime維護了乙個weak表,用於儲存指向某個物件的所有weak指標。weak表其實是乙個hash(雜湊)表,key是所指物件的位址,value是weak指標的位址(這個位址的值是所指物件指標的位址)陣列。

面試官:明天來上班吧

2023年

面試官:weak是怎麼實現的?

我 :    1    初始化時:runtime會呼叫objc_initweak函式,初始化乙個新的weak指標指向物件的位址。

2       新增引用時:objc_initweak函式會呼叫 storeweak() 函式, storeweak() 的作用是更新指標指向,建立對應的弱引用表。

3    釋放時,呼叫cleardeallocating函式。cleardeallocating函式首先根據物件位址獲取所有weak指標位址的陣列,然後遍歷這個陣列把其中的資料設為nil,最後把這個entry從weak表中刪除,最後清理物件的記錄。

面試官:明天來上班吧

2023年

面試官:weak是怎麼實現的?

我 :跟2023年說的一樣,還詳細補充了objc_initweak, storeweak, cleardeallocating的實現細節。

面試官:小夥子基礎不錯。13k ,996幹不幹?幹就明天來上班。。   下乙個

2023年

面試官:weak是怎麼實現的?

我 :     別說了,拿紙來,我動手實現乙個。

面試官:等寫完後,面試官慢悠悠的說,小夥子不錯,我考慮考慮,你先回去吧

C 的點點滴滴

函式傳值有三種方式 按值傳遞 pass by value 按位址傳遞 pass by address 和按引用傳遞 pass by reference 不同的是,按值傳遞方式中,函式部分不能改變主函式中實參的值。而按位址傳遞和按引用傳遞均可以改變主函式中實參的值。按值傳遞,實參和形參均為同一型別的物...

點點滴滴的積累

大學本科的四年裡,感覺過的很平庸。沒有學到什麼東西,就畢業了,那是放縱的大學生活。2005年,研2 時,因為要做畢業課題,我開始學習程式設計 因為師兄們畢業走了,我只能自己看書。當你知道該幹什麼,又沒人帶你的時候那是乙個痛苦的過程。半年mfc學到了一點皮毛,然後半年時間一直用在cplusplus上。...

實習的點點滴滴

markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細語法參考幫助?本編輯器支援markdown extra,擴充套件了很多好用的功能。具體請參考...