原创 iOS 基礎專題 五

一、App異常和崩潰監控 1. 崩潰類型 數組越界,或添加空對象 數據異常(網絡返回數據格式錯誤,數據解析異常) 野指針 ANR(App無響應),異常編碼0x8badf00d 權限問題 後臺任務超時 內存 多線程問題 2. 如何監測崩

原创 App啓動優化 - 實踐一

內容概要: 1. 啓動速度 2. 如何測量啓動時間 3. 影響啓動時間的原因 4. 啓動優化的方案 我們的應用在運行前應該減少操作,推遲一些啓動行爲,從而在啓動前一點點時間進行初始化。下面讓我們來看本章內容概要。 一、啓動速度 在不同平臺

原创 App啓動優化 - 理論部分

本文分爲理論【1-4】和實踐【5-6】兩部分: main()函數之前發生了什麼 Mach-O格式 虛擬內存基礎知識 如何加載和準備Mach-O二進制文件 如何測量啓動時間 優化啓動時間 一、Mach-O文件 Mach-O是運行時可執

原创 Android事件分發傳遞機制詳解

一、Window視圖層次結構 二、Activity、Window和View之間的關係 三、Android事件分發流程 以下是觸摸屏事件在傳遞分發過程中使用的方法,返回值爲true,表示觸摸屏事件被消費;否則表示未被消費。 public

原创 Swift 基礎---屬性(Attributes)

屬性提供關於聲明或類型的更多信息。Swift中有兩種屬性,一種應用於聲明,另一種應用於類型。 屬性的語法格式: @ attribute name @ attribute name(attribute arguments) 1. 聲明屬性

原创 App啓動優化 - 實踐二

概要: 什麼是啓動? 如何測量啓動? 使用Instruments分析啓動 跟蹤啓動的進度 一、啓動的重要性 影響用戶的體驗 表明代碼的整體性能 影響系統性能和電池 二、啓動類型 冷啓動(Cold) 當重啓設備或App長時間未啓

原创 App啓動優化 --- 理論部分

本文分爲理論【1-4】和實踐【5-6】兩部分: main()函數之前發生了什麼 Mach-O格式 虛擬內存基礎知識 如何加載和準備Mach-O二進制文件 如何測量啓動時間 優化啓動時間 一、Mach-O文件 Mach-O是運行時可執

原创 Block實現原理

Block是帶有自動變量值的匿名函數; 帶有自動變量值在Block中表現爲截獲自動變量值; 自動變量值截獲只能保存執行Block語法瞬間的值,保存後就不能改寫該值; 向截獲的自動變量賦值會產生編譯錯誤,但使用截獲的值不會產生任何問題;

原创 iOS 專題十 算法和數據結構

一、數組與鏈表有什麼區別? 1.內存存儲方面 數組靜態分配內存,棧中分配,存儲空間是連續的; 鏈表動態分配,堆中分配,存儲空間不連續; 2.邏輯結構方面 數組創建時必須指定長度(元素個數),不能適應數據動態增減的情況。當數據增加時,可

原创 iOS 專題二 UI

一、你瞭解UIKit的框架嗎? 二、iOS中的動畫 iOS動畫,原理與實操(詳細) iOS動畫詳解 簡析iOS動畫原理及實現——Core Animation 三、UI事件傳遞和響應者鏈 1.響應者對象 繼承自UIResponder的對

原创 iOS 面試專題一 基礎

一、字典的實現原理是什麼? 字典底層是一個hash表,它是使用hash表來實現key和value之間的映射和存儲的。 二、+load 和+initialize的區別是什麼?+load是否需要調用super?爲什麼? 1.+load 和+in

原创 Swift閉包詳解(Closures)

閉包是自包含的功能塊,可以在代碼中傳遞和使用。 Swift中的閉包類似於C和Objective-C中的塊以及其他編程語言中的lambdas。 閉包可以捕獲和存儲對定義它們的上下文中的任何常量和變量的引用。這被稱爲關閉那些常量和變量。 Swi

原创 Swift結構體和類詳解

一、類和結構體的對比 (一)、類和結構體的相同點 定義存儲值的屬性; 定義提供功能的方法; 定義下標以使用下標語法提供對其值的訪問; 定義初始化器來設置其初始狀態; 通過擴展增加新功能; 遵守協議來提供某種標準功能; (二)、類和結構體

原创 Swift 4.2基礎 --- 捕獲列表(Capture Lists)

默認情況下,閉包表達式從其周圍範圍捕獲常量和變量,並對強引用這些值。可以使用捕獲列表顯式地控制如何在閉包中捕獲值。 捕獲列表是在參數列表之前,以逗號分隔的表達式列表,由方括號包圍。如果使用捕獲列表,則必須使用in關鍵字,即使省略了參數名、參

原创 Swift 4.2基礎 --- 訪問控制

訪問控制限制從其他源文件和模塊中的代碼訪問你的某些代碼。該特性使你能夠隱藏代碼的實現細節,並指定一個首選接口,通過該接口可以訪問和使用代碼。 你可以爲單個類型(類、結構和枚舉)以及屬於這些類型的屬性、方法、初始化器和下標分配特定的訪問級別。