標籤:存在 擷取資料 select key cti delegate store 函數 經典的
1、MVC跟MVP的區別以及使用的優缺點是什嗎?
MVC中V和C之間的關係:C可以控制V的渲染這部分,V起顯示作?用,同時V上發?生的?使用者事件也可以給C來做?些處理理.
C和M之間的關係: C可以修改M. M跟V之間的關係: M可以改變V, V讀取M給它提供的資料, 可以展示界 ?面. MVC中, V跟M之間是有依賴關係的. 在使?用MVC的時候, ?網路是從C中發起的, C整體來說承擔的商務邏輯會?較大, 它起到了控制V和M的作?用
MVP是面向協議編程,V跟Model之間是完全沒關係的, 他們之間不存在引用和依賴關係. 耦合的操作全部由 Presenter來進?處理理.
網路請求在Model中發起, 把資料傳給P來進?處理, V也是?樣,它要拿資料, 就遵守P提供的協議, 實現P給它提供的協議方法. 擷取資料之後, 就可以進?展示了. 當然它的?些發起操作還是由C來進行. MVP中C?面的代碼很少, 主要邏輯由P來處理理. 由於是?向協議編程, 所以在開發的時候, 完全可以把?絡那層封裝起來,V和C完全沒必要關心?絡那層.
2、MVC經典的架構中說說有哪些常用的設計模式?
圖中包含的設計模式:
- delegate (代理模式)
- Notification & KVO (觀察者模式)
- target-action(命令模式)
MVC(中介者模式 ,內建了策略模式)
3、怎麼解決iOS打包成功之後,運行在iPhone上會閃退,黑屏的問題?
- 認證的錯誤,比如用發布認證打App Store的包
- 裝置並不在開發人員帳號裡
有?些閃退, 像ios10的時候, 要我們加的那個存取權限, 如相機的訪問,就是在plist?檔案?面加上.
4、說一說OC中字典的實現原理?
- ?部分語言字典的底層是?個雜湊表
- 雜湊表(本質就是一個數組)
雜湊函數:md5,雜湊演算法,SHA1
5、iOS中的訊息發送機制和訊息轉寄機制的區別?
- 訊息發送機制:使用了運行時,通過selector快速去尋找IMP的一個過程
- ?法在執行的時候, 編譯器會把?法編譯成objc_msgSend()函數
訊息轉寄機制:IMP找不到的時候,通過一些方法做轉寄處理
6、組件間的通訊,是通過什麼方式來做的,請詳細的解釋一下.
- 采?路由的方式, 通過路由的方式來實現模組之間業務的調轉, 主工程跟模組之間,不直接引用. 模組與模組之間也不直接引?. 直接引?的時候, 依賴性會更強. 在中間引?的router, 可以降低耦合性。
router中採用了target_action以及NSInvocation來進行實現,它們其實是一種命令模式。
7、SDWebImage是怎麼來清理緩衝的?清理緩衝有兩種?方式:
- 1.根據時間周期來清理:
步驟:
-
- 找磁碟緩衝目錄
-
- 使??錄枚舉?, 根據傳入的key擷取快取檔案
-
- 擷取超過7天的檔案
-
- 把超過7天的檔案放到?個數組?面, 統一進行刪除
5.把沒有到期的檔案存起來, 並計算檔案的總?小
- 2.根據定義的磁碟大小清理
步驟:
- 1.如果設定了磁碟的最?儲存. 最?的緩衝大於零, 並且當前的緩衝?小已經?於最大的緩衝?小
- 2.清除緩衝, 直到緩衝到達最大緩衝的一半.
3.清除的時候, 雖然圖?沒有到期, 它也會根據時間最?的來先刪,
8、SDWebImage是怎麼處理接收的記憶體警告的?
- ?的是AutoPurgeCache這個類來處理記憶體警告
- 這個類是繼承?NSCache.
- 發現記憶體警告, 就直接removeAllObjects全部清理掉
9、SDWebImage中怎麼計算圖片的成本大小?
計算圖片佔用的記憶體?小. 高?例因子寬*?例因?
計算在緩衝中的?小. 在同步的隊列?面, 擷取圖片的路徑,拿到圖片之後,依次進行疊加.
10、SDWebImage中clear和clean有什麼樣的區別?
clean 刪除緩衝,只會刪除一部分,根據到期時間和空間大小
clear 整個目錄全部刪除
答案都是收集而來,如果有什麼錯誤,歡迎指正!
iOS面試題(一)