iOS面試題系列之UI相關

2021-08-01 12:43:32 字數 2733 閱讀 9558

監聽系統事件:

3、 簡述推送訊息原理。

(2)有關於devicetoken變化問題:

重新安裝或解除安裝應用程式,devicetoken不會發生變化。

系統公升級devicetoken可能會發生變化。

抹掉所有內容和設定,重置裝置後,devicetoken會變化

4、 簡單說下uitableview、uibutton、uiwindow控制項的繼承關係。

(1)uitableview的繼承關係:uitableview繼承uiscrollview。uiscrollview繼承uiview。uiview繼承uiresponder。uiresponder繼承nsobject。

(2)uibutton的繼承關係:uibutton繼承uicontrol,uicontrol繼承uiview。uiview繼承uiresponder,uiresponder繼承nsobject。

(3)uiwindow繼承uiview。

5、 uiview與uibutton有什麼區別?uiswitch呢?

uiview繼承自uiresponder,它能響應某個動作。uibutton繼承uicontrol。它不僅可以響應某個動作,還能為某個物件新增對應的動作加以響應。

uibutton也能實現uiswitch的功能,它們的區別是分發的事件不一樣。

6、 簡述uicontrol的繼承關係,它用來做什麼?

uicontrol繼承uiview。uiview繼承uiresponder,uiresponder繼承nsobject。它能為某個特定物件新增事件。能進行事件分發。

7、 簡述uiviewcontroller中view的生命週期。

8、 簡述uitableview的**方法呼叫順序。

先呼叫numberofsectionsintableview:方法,

numberofrowsinsection:

heightforrowatindexpath:

cellforrowatindexpath:

9、 你在用collectionview的時候有沒有遇到什麼問題?問題是怎麼解決的?

重新整理的時候會閃爍。在重新整理的時候會預設附加乙個隱式的fade動畫。可以通過取消動畫來達到取消閃爍的目的。

10、 簡述uiresponder類的作用。

11、 如何監聽view的觸控事件?事件如何傳遞?簡述檢視的響應者鏈。

可以通過view類的touchesbegan、touchesmoved、touchesended、touchescancelled方法監聽檢視的觸控。

12、 calayer與uiview有什麼區別?

(1)uiview是ios系統中介面元素的繼承。所有的介面元素都繼承自它,他本身完全是由coreanimation來實現的。它真正的繪圖部分,是由乙個叫calayer的類來管理。uiview本身更像是乙個calayer的管理器,訪問它的跟繪圖和跟座標有關的屬性,如frame,bounds等,實際上內部都是在訪問它所包含的calayer的相關屬性。

(2)uiview有個layer屬性,可以返回它的主calayer例項,uiview有乙個layerclass方法,返回主layer所使用的類,uiview的子類,可以通過過載這個方法,來讓uiview使用不同的calayer來顯示。

(3)uiview的calayer類似uiview的子view樹形結構,也可以向它的layer上新增子layer。

(4)calayer座標系統與uiview有點不一樣,它多了乙個anchorpoint的屬性。

(5)uiview的layer樹形在系統內部,被系統維護著三份copy。邏輯樹,動畫樹,顯示樹。

(6)calayer預設修改屬性支援隱式動畫

(7)view可以接受並處理事件,layer不可以。

13、 如何優化uitableview?

(1)復用單元格

(2)使用不透明的檢視,單元格中少使用動畫。

(3)使用非同步載入,設定載入的併發數。

(4)滑動時不載入,停止滑動時再載入。

(5)和文字可以直接drawrect

(6)如果cell是動態行高,計算快取單元格高度

(7)盡量少reloaddata,只reloadrowsatindexpaths

(8)cell高度固定直接用rowheight屬性設定高度。

14、 簡述載入到控制器上的根檢視建立與載入時機。

檢視控制器的根檢視載入是在uiviewcontroller的loadview方法中。當檢視控制中的loadview方法被呼叫時,會先通過nsbundle載入,通過控制器的類名作為xib檔名載入xib檔案,如果存在,載入view為根檢視,如果不存在,則自動建立乙個view作為根檢視。

15、 簡述uitableview中cell的復用機制。

uitableview會建立螢幕顯示單元格個數(n)+1個單元格,當滑動到第n+2個單元格時就會復用第1個單元格。uitableview中還有單元格復用池的概念。

當tableview呼叫初始化單元格協議方法獲取單元格時,它會根據你設定的reuse identifier先去復用池中查詢可用的復用單元格,找到則復用該單元格,沒找到這建立乙個新的單元格物件。

面試題相關

一些位址 osi七層功能及協議 資料鏈路層是如何定址的?傳送方 已知接收方ip arp 接收方mac位址 交換機尋找該mac位址所在埠,把幀往這個埠 mac通過rarp轉為ip位址。可靠通訊是靠哪一層來完成的?網路層 tcp協議 100base t 100mbps,baseband,雙絞線對。簡而言...

02 面試題系列 併發集合相關

2019 03 16 10 週三不加班 同步集合可以簡單地理解為通過 synchronized 來實現同步的集合。不管是同步集合還是併發集合他們都支援執行緒安全,他們之間主要的區別體現在效能和可擴充套件性,二者都支援執行緒安全,區別主要體現在實現執行緒安全的方式,因此在效能和可擴充套件性上有明顯不同...

設計模式之相關面試題

1 請使用uml類圖畫出原型模式核心角色 2 原型設計模式的深拷貝和淺拷貝是什麼,並寫出深拷貝的兩種方式的原始碼 重寫clone方法實現深拷貝 使用序列化來實現深拷貝 3 在spring框架中 使用到原型模式,並對原始碼進行分析 beans.xml 4 spring中原型bean的建立,就是原型模式...