原创 iOS的MVC設計模式和MVVM的異同點以及iOS中如何實現數據綁定

設計模式:MVC 在模型對象(model)中封裝數據和基本行爲 模型對象維護應用程序的數據,並定義操作數據的特定邏輯。 只要是加載的是包含有應用程序永久信息的數據,就將其放到model中。 理想狀況下,模型對象同用於對其進行顯示

原创 iOS | 內存管理(MRC和ARC的區別以及實現)

自動引用計數(ARC)是指內存管理中對引用採取自動計數的技術。 使用ARC,就無需再次鍵入retain或者release代碼,這降低了程序崩潰,內存泄漏等風險的同時,很大程度上減少了開發程序的工作量。ARC技術使得編譯器清楚目標對

原创 iOS | Runtime原理及應用

Runtime介紹 高級編程語言想要成爲可執行文件需先編譯爲彙編語言再彙編爲機器語言,機器語言也是計算機能夠識別的唯一語言,但是OC並不能直接編譯爲彙編語言,而是要先轉寫爲純c語言再進行編譯和彙編操作,從OC到C語言的過渡就是ru

原创 內存管理 || 物理內存的管理

內存管理的層次 內存管理的目標 抽象: 邏輯地址空間(不考慮底層細節,只需訪問一個連續的地址空間) 保護: 獨立地址空間(不會被別的進程破壞) 共享 訪問相同內存(進程間數據傳遞) 虛擬化 更多的地址空間(

原创 iOS多線程和網絡

提供的功能 通過URL將數據下載到內存 通過URL將數據下載到文件系統 將數據上傳到指定的URL 在後臺完成上述操作(支持後臺網絡操作,除非用戶強行關閉應用程序) NSURLConnection和NSURLSession的關係

原创 iOS vs Flutter(語法篇)

iOS開發者入門Flutter 首先說一下,爲什麼要關心iOS和Flutter的區別問題。因爲移動端開發的業務邏輯設計模式等是一致的,區別可能只在於使用的語言不同,實現邏輯的風格不同而已。所以這裏我們先分析一下iOS和Flutte

原创 操作系統的進程管理

進程組成: PCB PCB:系統爲每個運行的程序配置一個數據結構,稱爲進程控制塊(PCB),用來描述進程的各種信息(如程序代碼存放位置) PCB,程序段,數據段三部分構成了進程實體(進程映像)。所謂創建進程,實際上是創建進程實體中

原创 內存管理 || 虛擬內存的管理

覆蓋技術: 程序設計分爲常駐區以及覆蓋區 覆蓋區可以通過運行與阻塞時換入換出實現內存空間的共享 同一覆蓋區的程序模塊之間必須不存在相互調用關係 交換技術: 將進程的整個地址空間在某個時刻導入到外存或從外存導入內

原创 操作系統內存管理 || 物理內存的管理

內存管理的層次 內存管理的目標 抽象: 邏輯地址空間(不考慮底層細節,只需訪問一個連續的地址空間) 保護: 獨立地址空間(不會被別的進程破壞) 共享 訪問相同內存(進程間數據傳遞) 虛擬化 更多的地址空間(

原创 KVO的實現原理

KVO是通過isa-swizzing的方法來實現的。就是比如B作爲觀察者觀察A的屬性name時,在運行時會動態生成一個A的子類notify_A類,然後將A類的實例對象的isa指針指向notify_A這個子類,然後在子類中重寫的方法

原创 iOS | Blocks

概要 Blocks時c語言的擴充功能,就是帶有自動變量(局部變量)的匿名函數 模式 語法: ^ 返回值類型 參數列表 表達式 例如:^int (int count) {return count + 1;} 可省略返回值類型,Blo

原创 iOS的MVC設計模式

設計模式:MVC 在模型對象(model)中封裝數據和基本行爲 模型對象維護應用程序的數據,並定義操作數據的特定邏輯。 只要是加載的是包含有應用程序永久信息的數據,就將其放到model中。 理想狀況下,模型對象同用於對其進行顯示

原创 iOS | RunLoop

RunLoop 簡介 RunLoop就是控制線程生命週期並接收事件進行處理的機制。 不知道大家有沒有想過這個問題,一個應用開始運行以後放在那裏,如果不對它進行任何操作,這個應用就像靜止了一樣,不會自發的有任何動作發生,但是如果我們

原创 iOS | Grand Central Dispatch (GCD)

進程和線程: 進程是一個正在運行的應用程序,一個應用程序可以對應一個或多個進程。應用程序是一個沒有生命的實體,只有運行之後,才能成爲一個活動的實體,也就是進程。 進程是操作系統分配資源的基本單元。進程在運行的過程中擁有獨立的內存單

原创 c++虛函數表解析

前言   C++中的虛函數的作用主要是實現了多態的機制。關於多態,簡而言之就是用父類型別的指針指向其子類的實例,然後通過父類的指針調用實際子類的成員函數。這種技術可以讓父類的指針有“多種形態”,這是一種泛型技術。所謂泛型技術,說