原创 Operation、OperationQueue的使用

iOS、macOS 設備一般爲多核,也就是可以同時執行多項任務。將代碼分爲多塊,併發(Concurrency)執行可以提高 app 流程性。 iOS、macOS 提供了Grand Central Dispatch(簡稱GCD)、Operat

原创 線程同步之自旋鎖

這是併發控制方案的系列文章,介紹了各種鎖的使用及優缺點。 自旋鎖 os_unfair_lock 互斥鎖 遞歸鎖 條件鎖 讀寫鎖 @synchronized OSSpinLock、os_unfair_lock、pthread_mute

原创 SQLite的使用三

這是SQLite系列文章第三篇。 SQLite的使用一 SQLite的使用二 SQLite的使用三 SQLite的使用一、SQLite的使用二這兩篇文章主要介紹了 SQLite 的基本語句。這篇文章將介紹 Swift 中如何使用 S

原创 SQLite的使用二

這是SQLite系列文章第二篇。 SQLite的使用一 SQLite的使用二 SQLite的使用三 這篇文章涉及以下內容: LIKE LIMIT ORDER BY GROUP BY HAVING DISTINCT 觸發器 TRIG

原创 SQLite的使用一

這是SQLite系列文章第一篇。 SQLite的使用一 SQLite的使用二 SQLite的使用三 SQLite 是遵守 ACID 的關係數據庫管理系統(Relational database management system,簡

原创 Runtime從入門到進階二

上一篇文章Runtime從入門到進階一介紹了消息發送,以及與之相關的Object、Class、metaClass、Method等。這一篇文章將介紹動態方法解析、消息轉發和 runtime 的具體應用。 在消息解析階段找不到 selector

原创 Runtime從入門到進階一

Objective-C 語言儘可能將決策從編譯時間、鏈接時間推遲到運行時。只要有可能,它就會動態地執行任務。這意味着 Objective-C 不僅需要編譯器,還需要運行時系統(runtime system)執行編譯的代碼。Objective

原创 RunLoop從入門到進階

一個線程一次只能執行一個任務,執行完畢後就會退出。如果需要一個機制,讓線程能隨時處理事件,處理完畢後並不退出,代碼邏輯是這樣的: function main initialize() while message != qui

原创 併發控制之無鎖編程

這是多線程、併發控制系列文章第三篇,本文內容主要來自Lock-free multithreading with atomic operations,並做了部分補充。 多線程簡述 併發控制之線程同步 併發控制之無鎖編程 希臘語中的 a

原创 併發控制之線程同步

這是多線程、併發控制系列文章第二篇,本文內容主要來自Introduction to thread synchronization,並做了部分補充。 多線程簡述 併發控制之線程同步 併發控制之無鎖編程 上一篇多線程簡述提到編寫併發代碼

原创 Texture 中 Node 的生命週期

這是 Texture 文檔系列翻譯,其中結合了自己的理解和工作中的使用體會。如果哪裏有誤,希望指出。 Texture 核心概念 Texture 佈局 Layout Texture 便捷方法 Texture 性能優化 Texture 容器

原创 Texture 基本控件 Node

這是 Texture 文檔系列翻譯,其中結合了自己的理解和工作中的使用體會。如果哪裏有誤,希望指出。 Texture 核心概念 Texture 佈局 Layout Texture 便捷方法 Texture 性能優化 Texture 容器

原创 條件編譯 Conditional Compilation

通常,Objective-C 程序的編譯從源代碼到可執行文件分爲三個階段。第一階段,預處理程序(preprocessor)的工具掃描開發人員編寫的代碼,並轉換爲對編譯器友好的格式;第二階段,編譯器從預處理的源代碼生成目標代碼(通常文件擴展名

原创 HTTP Live Streaming 詳解

HTTP Live Streaming 是 Apple 實現的基於 HTTP 的自適應比特率流通信協議,使用 HLS 可以直播(live)和點播(on-demand)音、視頻。由於 HLS 採用了 HTTP 協議,使用普通 web 服務器和

原创 URLSession詳解

這篇文章介紹了 URL Loading System 相關知識,涉及以下內容: URLSession類型。 URLSessionTask類型 URLSessionDelegate、URLSessionTaskDelegate、URL