面試 iOS 開(kāi)發(fā)時(shí)可以問(wèn)的一些問(wèn)題 --- 知識(shí)性問(wèn)題篇

知識(shí)性問(wèn)題

  • 什么是響應(yīng)鏈,它是怎么工作的?
  • 如何訪問(wèn)并修改一個(gè)類的私有屬性?
  • iOS Extension 是什么?能列舉幾個(gè)常用的 Extension 么?
  • 如何把一個(gè)包含自定義對(duì)象的數(shù)組序列化到磁盤?
  • Apple Pay 是什么?它的大概工作流程是怎樣的?
  • iOS 的沙盒目錄結(jié)構(gòu)是怎樣的? App Bundle 里面都有什么?
  • iOS 的簽名機(jī)制大概是怎樣的?
  • iOS 7的多任務(wù)添加了哪兩個(gè)新的 API? 各自的使用場(chǎng)景是什么?
  • Objective-C 的 class 是如何實(shí)現(xiàn)的?Selector 是如何被轉(zhuǎn)化為 C 語(yǔ)言的函數(shù)調(diào)用的?
  • UIScrollView 大概是如何實(shí)現(xiàn)的,它是如何捕捉、響應(yīng)手勢(shì)的?
  • Objective-C 如何對(duì)已有的方法,添加自己的功能代碼以實(shí)現(xiàn)類似記錄日志這樣的功能?
  • +load+initialize 的區(qū)別是什么?
  • 如何讓 Category 支持屬性?
  • NSOperation 相比于 GCD 有哪些優(yōu)勢(shì)?
  • strong / weak / unsafe_unretained 的區(qū)別?
  • 如何為 Class 定義一個(gè)對(duì)外只讀對(duì)內(nèi)可讀寫的屬性?
  • Objective-C 中,meta-class 指的是什么?
  • UIViewCALayer 之間的關(guān)系?
  • +[UIView animateWithDuration:animations:completion:] 內(nèi)部大概是如何實(shí)現(xiàn)的?
  • 什么時(shí)候會(huì)發(fā)生「隱式動(dòng)畫(huà)」?
  • 如何處理異步的網(wǎng)絡(luò)請(qǐng)求?
  • framebounds 的區(qū)別是什么?
  • 如何把一張大圖縮小為1/4大小的縮略圖?
  • 一個(gè) App 會(huì)處于哪些狀態(tài)?
  • Push Notification 是如何工作的?
  • 什么是 Runloop?
  • Toll-Free Bridging 是什么?什么情況下會(huì)使用?
  • 當(dāng)系統(tǒng)出現(xiàn)內(nèi)存警告時(shí)會(huì)發(fā)生什么?
  • 什么是 Protocol,Delegate 一般是怎么用的?
  • autorelease 對(duì)象在什么情況下會(huì)被釋放?
  • UIWebView 有哪些性能問(wèn)題?有沒(méi)有可替代的方案。
  • 為什么 NotificationCenter 要 removeObserver? 如何實(shí)現(xiàn)自動(dòng) remove?
  • 當(dāng) TableViewCell 改變時(shí),如何讓這些改變以動(dòng)畫(huà)的形式呈現(xiàn)?

1.什么是響應(yīng)鏈,它是怎么工作的?

響應(yīng)者對(duì)象和響應(yīng)者鏈

響應(yīng)者對(duì)象是可以響應(yīng)事件并對(duì)其進(jìn)行處理的對(duì)象. UIResponder是所有響應(yīng)者對(duì)象的基類, 它不僅為事件處理, 而且也為常見(jiàn)的響應(yīng)者行為定義編程接口. UIApplication,UIView和所有從UIView派生出來(lái)的UIKit類 (包括UIWindow) 都直接或間接地繼承自UIResponder類.

第一響應(yīng)者是應(yīng)用程序中當(dāng)前負(fù)責(zé)接收觸摸事件的響應(yīng)者對(duì)象(通常是一個(gè)UIView對(duì)象). UIWindow對(duì)象以消息的形式將事件發(fā)送給第一響應(yīng)者, 使其有機(jī)會(huì)首先處理事件. 如果第一響應(yīng)者沒(méi)有處理, 系統(tǒng)就將事件(通過(guò)消息)傳遞給響應(yīng)者鏈中的下一個(gè)響應(yīng)者, 看看它是否可以進(jìn)行處理.

響應(yīng)者鏈一系列鏈接在一起的響應(yīng)者對(duì)象, 它允許響應(yīng)者對(duì)象將處理事件的責(zé)任傳遞給其他更高級(jí)別的對(duì)象. 隨著應(yīng)用程序?qū)ふ夷軌蛱幚硎录膶?duì)象, 事件就在響應(yīng)者鏈中向上傳遞. 響應(yīng)者鏈由一系列"下一個(gè)響應(yīng)者"組成, 其順序如下:

  • 第一響應(yīng)者將事件傳遞給它的視圖控制器(如果有的話), 然后是它的父視圖.
  • 類似的, 視圖層次中的每個(gè)后續(xù)視圖都首先傳遞給它的視圖控制器(如果有的話), 然后是它的父視圖.
  • UIWindow對(duì)象將事件傳遞給UIApplication單利對(duì)象

如果應(yīng)用程序找不到能夠處理事件的響應(yīng)者對(duì)象, 則丟棄該對(duì)象.

響應(yīng)者鏈中的所有響應(yīng)者對(duì)象都可以實(shí)現(xiàn)UIResponder的某個(gè)事件處理方法, 因此也都可以接受事件消息. 但是, 它們都不愿處理或只是部分處理某些事件. 如果是那些的話, 它們就可以將事件消息傳送給下一個(gè)響應(yīng)者.

事件的傳遞
發(fā)生觸摸事件后,系統(tǒng)會(huì)將該事件加入到一個(gè)由UIApplication管理的事件 隊(duì)列中,UIApplication會(huì)從事件隊(duì)列中取出最前面的事件,并將事件分發(fā)下去以便處理,通常,先發(fā)送事件給應(yīng)用程序的主窗口(keyWindow),主窗口會(huì)在視圖層次結(jié)構(gòu)中找到一個(gè)最合適的視圖來(lái)處理觸摸事件,但是這僅僅是整個(gè)事件處理過(guò)程的 第一步 找到合適的視圖控件后,就會(huì)調(diào)用視圖控件的touches方法來(lái)作具體的事件處理, 這些touches方法的默認(rèn)做法是將事件順著響應(yīng)者鏈條向上傳遞,將事件交給上一個(gè)響應(yīng)者進(jìn)行處理.

事件傳遞的完整過(guò)程
先將事件對(duì)象由上往下傳遞(由父控件傳遞給子控件),找到最合適的控件來(lái)處理這個(gè)事件。 調(diào)用最合適控件的touches….方法 如果調(diào)用了[super touches….];就會(huì)將事件順著響應(yīng)者鏈條往上傳遞,傳遞給上一個(gè)響應(yīng)者 接著就會(huì)調(diào)用上一個(gè)響應(yīng)者的touches….方法


2,如何訪問(wèn)并修改一個(gè)類的私有屬性?

回答在這

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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