原创 CoreGraphics系列三:pattern和transparency layer

這篇文章將介紹如何在視圖的背景上繪製重複的 pattern,爲多個layer繪製一個陰影。 這篇文章基於前兩篇文章CoreGraphics系列一:path和CoreGraphics系列二:gradient和context。如果你對CoreG

原创 CoreGraphics系列二:gradient和context

上一篇文章CoreGraphics系列一:path介紹瞭如何使用 CoreGraphics 繪製線和圓弧。這一篇文章將深入介紹 Core Graphics,學習繪製漸變,使用 transformation 操控CGContexts。 1.

原创 CoreGraphics系列一:path

Core Graphics 框架也稱爲 Quartz 2D,是基於 Quartz 的高級渲染引擎,它提供了底層輕量級 2D 渲染引擎,可以進行高保真輸出。 Quartz 2D 簡單易用,提供了強大的功能。例如,基於路徑的繪製,變換,顏色管理

原创 strong、weak和unowned的區別

編寫代碼時需注意是否產生了循環引用,因此就產生了什麼時候使用weak、unowned問題?這篇文章將介紹 Swift 中的strong、weak、unowned的區別。 1. ARC 自動引用計數(即 Automated Reference

原创 Block的本質

當需要執行異步操作,或同步多個操作時,塊(Block)會非常有用。這一篇文章將介紹 Block 的本質。如果你對 block 還不瞭解,推薦先查看Block的用法。 1. Block的本質 Block 是封裝了函數調用及函數調用環境的 Ob

原创 二叉搜索樹 Binary Search Tree

二叉搜索樹(Binary Search Tree,簡稱BST)也稱爲二叉查找樹、有序二叉樹(Ordered Binary Tree),或排序二叉樹(Sorted Binary Tree)。二叉搜索樹是一顆空樹,或具有以下性質的二叉樹: 如

原创 關聯對象 Associated Object 的本質

上一篇文章分類category、load、initialize的本質和源碼分析介紹到,在objc4最新源碼objc4-818.2中,category結構體如下: struct category_t { const char *nam

原创 分類category、load、initialize的本質和源碼分析

這篇文章介紹分類category、load、initialize的本質,並分析其源碼。 1. 分類 category 隨着需求的演進,類會遇到一些無法處理的情況,應如何擴展已有的類呢? 通常,繼承和組合是不錯的選擇。但 Objective-

原创 二叉樹 Binary Tree

上一篇文章樹 Tree 基本信息及實現介紹了 Tree 的基本信息,一個節點可以有多個子節點。二叉樹(Binary Tree)每個節點至多有兩個子節點,被稱爲左子樹(left)、右子樹(right)。 二叉樹是很多樹結構和算法的基礎。這篇

原创 KVC、KVO的本質

這篇文章介紹KVC、KVO的本質。如果你對KVC、KVO不瞭解,推薦先查看其用法:KVC和KVO學習筆記。 1. KVO的本質 KVO 是 Key Value Observing 的縮寫,稱爲健值觀察。用於監聽對象屬性值的改變。 1.1 K

原创 樹 Tree 基本信息及實現

樹(Tree)是一種很重要的數據結構,在軟件開發的多方面都有使用: 表示層級結構。 計算機語言的抽象語法樹。 解析人類語言的樹。 XML 和 HTML 文檔對象模型。 處理 JSON 和YAML 文檔。 快速查找數據。 管理有序數

原创 高斯模糊原理、以及如何使用UIVisualEffectView實現模糊效果

這篇文章將介紹如何使用UIVisualEffectView實現 iOS 系統中各種模糊效果(blur effect)、鮮豔度效果(vibrancy effect),以及模糊效果的原理。 自 iOS 7 設計風格改變後,模糊效果在 app

原创 線程同步之os_unfair_lock

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

原创 Operation、OperationQueue的使用

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

原创 線程同步之自旋鎖

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