iOS會遇到的面試題(一)

2021-07-10 17:51:02 字數 1161 閱讀 7156

1,請你講講mrc的記憶體管理

mac的記憶體管理是採用了引用計數,

當alloc/new/copy計數器初始值為1

retain時計數器加1

release時計數器減1

我們需要在dealloc方法中釋放變數,當物件被銷毀時,系統就會自動呼叫方法,當計數器為0時,方法也會被自動呼叫

2,請你講講@proprety關鍵字的作用

我認為是提供了乙個外界訪問成員變數的介面,就是給成員變數提供了set和get的方法

3,請你講講@proprety中assign,retain,strong, weak有什麼區別

assign和retain是mrc中的,assign修飾的變數既不能retain也不能被release,所以一般在基本資料型別用assign,(因為基本資料型別都是存放在全域性區或者棧區,不需要手動釋放),而retain用來修飾物件型別

strong與weak都是現在arc中的,我認為強引用strong與retain作用相同,計數器都會加1

而弱引用weak與assign作用相同,可以用來修飾基本資料型別,當然在retain cycle中也確實需要weak

4,請你講講如今ios的頁面約束問題(介面適配)

1,用原生的nslayoutconstraint(非常的麻煩,不推薦)

2,vlf簡化

3,第三方框架masonry (特別簡潔)

uiedgeinsets padding = uiedgeinsetsmake(10, 10, 10, 10);

[view1 mas_makeconstraints:^(masconstraintmaker *make) ];

甚至我們這樣寫得更加簡潔

[view1 mas_makeconstraints:^(masconstraintmaker *make) ];

5,tableviewcell的重用機制

乙個單元格對應乙個reuseidentifer可重用識別符號,當乙個單元格滾出螢幕時可以被用來重用,運用重用機制,即時上百個單元格也只需要螢幕顯示的最大單元格數,當新的cell進入螢幕時,會隨機呼叫已經滾出螢幕的cell所占用的記憶體

uitableviewcel *cell =[tableview dequeuereusablecellwithidentifier:@"cell" ];

if(cell=nil)

iOS面試題 一

圖中包含的設計模式 delegate 模式 notification kvo 觀察者模式 target action 命令模式 mvc 中介者模式 內建了策略模式 裝置並不在開發者賬號裡 有 些閃退,像ios10的時候,要我們加的那個訪問許可權,如相機的訪問,就是在plist 檔案 面加上.清 快取...

iOS 演算法面試題(一)

1 不用中間變數,用兩種方法交換a和b的值 1.中間變數 void swap int a,int b 2.加法 void swap int a,int b 3.異或 相同為0,不同為1.可以理解為不進製加法 void swap int a,int b 2 求最大公約數 1.直接遍曆法 int max...

iOS面試題總結(一)

1.為什麼不能給類別category 新增成員變數?extension呢?2.iskindofclass 和 ismemberofclas區別?3.weak的實現原理 4.理解 self class 與 super class 5.ios中的記憶體管理機制 6.block如何訪問外部變數?下劃線 b...