原创 iOS開發進階:GCD函數分析

dispatch_queue_create dispatch_queue_create調用了_dispatch_lane_create_with_target,繼續調用_dispatch_object_alloc、_dispatch_qu

原创 iOS開發進階:KVC 1.KVC鍵值查找流程 2.KVC對結構體類型的存取 3.KVC操作符方面的運用 4.自定義KVC

KVC是由NSKeyValueCoding非正式協議啓用的一種機制,對象採用該協議提供對其屬性的間接訪問。當對象符合鍵值編碼時,其屬性可以通過簡潔、統一的消息傳遞接口通過字符串參數進行尋址。這種間接訪問機制補充了實例變量及其相關訪問器方法

原创 iOS底層探索:多線程與GCD

一、多線程 1.1進程與線程 進程:進程是指在系統中正在運行的一個應用程序;每個進程之間是獨立的,每個進程均運行在其專用的受保護的內存空間內。 線程:線程是進程的基本執行單元,一個進程的所有任務都在線程中執行;進程要想執行任務,必須要

原创 iOS底層探索:方法查找與消息轉發

Objective-C的方法的調用都是一個消息轉發的過程,objc_msgSend(receiver, selector, ...),第一個參數表示消息的接收者,第二個參數表示消息的名稱,即方法。 方法的調用,中間經歷了消息的快速查找、

原创 Flutter學習筆記:基礎控件的使用

flutter是一款移動應用跨平臺框架,使用Dart語言編寫的一份代碼可以生成iOS和Android兩個高性能、高保真的應用程序。Flutter不借助原生的渲染能力,而是自己實現了一套與Android和iOS一樣的渲染原理,從而在性能上與

原创 iOS底層探索:從dyld到main 一、dyld內部的主要流程 二、map_images流程 三、load_images流程

問自己兩個問題: 1.應用啓動在main函數之前到底做了什麼事情? 2.類、分類中load方法的加載順序怎樣的?分類中出現的與主類同名的方法,會調用哪一個呢? 這些問題,不跟蹤一次底層的源碼?怎麼會領悟得透徹呢? 我們實現一個類,然後在

原创 iOS底層探索:load、initialize方法的調用規則

通過上一篇的介紹我們知道了App的啓動流程中dyld做了哪些事情,那麼: +load和+initialize分別是什麼時候調用的呢?以及他們在父類,子類,分類中調用的順序是什麼樣的呢? 我們先準備如下幾個Class和Category:

原创 iOS底層探索:KVO 1.準備工作 2.屬性觀察 3.對可變數組的觀察

使用稱爲isa swizzling的技術實現自動鍵值觀察。顧名思義,isa指針指向維護分派表的對象類。這個分派表本質上包含指向類實現的方法的指針以及其他數據。 當一個觀察者爲一個對象的屬性註冊時,被觀察對象的isa指針被修改,指向一箇中間

原创 iOS底層探索:KVC 1.KVC鍵值查找流程 2.KVC對結構體類型的存取 3.KVC操作符方面的運用 4.自定義KVC

KVC是由NSKeyValueCoding非正式協議啓用的一種機制,對象採用該協議提供對其屬性的間接訪問。當對象符合鍵值編碼時,其屬性可以通過簡潔、統一的消息傳遞接口通過字符串參數進行尋址。這種間接訪問機制補充了實例變量及其相關訪問器方法

原创 iOS底層探索:NSObject-alloc、init、new 1.alloc的代碼執行流程 2.obj初始化流程 3.重點探究 3.init流程 4. [[X alloc] init] 4.new

我們實例化一個NSObject對象,最常見的代碼就是 NXPerson *person = [[NXPerson alloc] init]; 對於調用alloc/init等方法底層究竟發生了什麼,你是否知道呢?今天我們就來一探究竟: 以

原创 iOS底層原理探索:KVO 1.準備工作 2.屬性觀察 3.對可變數組的觀察

使用稱爲isa swizzling的技術實現自動鍵值觀察。顧名思義,isa指針指向維護分派表的對象類。這個分派表本質上包含指向類實現的方法的指針以及其他數據。 當一個觀察者爲一個對象的屬性註冊時,被觀察對象的isa指針被修改,指向一箇中間

原创 iOS底層原理探索:KVO 1.準備工作 2.開始觀察

使用稱爲isa swizzling的技術實現自動鍵值觀察。顧名思義,isa指針指向維護分派表的對象類。這個分派表本質上包含指向類實現的方法的指針以及其他數據。 當一個觀察者爲一個對象的屬性註冊時,被觀察對象的isa指針被修改,指向一箇中間

原创 iOS底層原理探索:KVC 1.KVC鍵值查找流程 2.KVC對結構體類型的存取 3.KVC操作符方面的運用 4.自定義KVC

KVC是由NSKeyValueCoding非正式協議啓用的一種機制,對象採用該協議提供對其屬性的間接訪問。當對象符合鍵值編碼時,其屬性可以通過簡潔、統一的消息傳遞接口通過字符串參數進行尋址。這種間接訪問機制補充了實例變量及其相關訪問器方法

原创 objc_object & objc_class

struct objc_object { Class _Nonnull isa OBJC_ISA_AVAILABILITY; }; struct objc_class { Class _Nonnull isa OBJ