解决 Xcode 下载 iOS Simulator 频繁失败

从 Xcode 引导安装 iOS Simulator 套件很容易下载失败且无法断点续传,解决办法是直接从 Apple 开发者网站下载文件手动安装。

解决办法

https://developer.apple....

函数柯里化

函数柯里化(Function Currying)是一种函数式编程技术,将一个接受多个参数的函数转换成一系列接受一个参数的函数的过程。它得名于计算机科学家 Haskell Curry。

柯里化的关键思想是将多参数函数转化为...

递归枚举

递归枚举是指枚举类型中的一个或多个case关联到同一枚举类型。递归枚举在定义时需要使用 indirect 关键字来标记关联的case。

indirect enum ArithmeticExpression { cas...

Swift GCD

DispatchQueue 三种类型

Main Queue 主队列,串行 Global Queue 全局队列,并行 Custom Queue 自定义队列,默认串行 let mainQueue =...

Swift 计时器

在 Swift 中,计时器通常有以下三种

Timer DispatchSourceTimer CADisplayLink

区别

原理不同

CADisplayL...

Swift Runloop 线程常驻

在 Swift 中,线程常驻是指创建一个线程,并保持其长期存在,以处理持续的任务或等待事件。

import UIKit class ViewController: UIViewController { ...

Swift 深度和广度优先搜索

DFS 深度搜索。从当前角落开始,顺着一个方向不停的找。假如这个方向全部搜索完毕依然没有找到钥匙,就回到起始角落,从另一个方向寻找,直到找到钥匙或所有方向都搜索完毕为止。 BFS 广度搜索。从当前角落开始,每次把最近所有方...

Swift 关联对象

Swift Extension 能够给已有类添加计算型属性,但是仍然不能添加存储属性。Swift 中也可以使用 Objective-C runtime 的关联对象(Associated Objects)的方式添加属性,弥补这一痛点。 ...

设计模式-工厂方法与抽象工厂

工厂方法

用于创建单一产品对象,通过子类决定具体实例化的产品类。适用于需要在运行时根据不同条件创建不同类的对象的场景。

适用场景

需要创建的对象类型在运行时才确定。 需要将对象的创...

设计模式-桥接模式

桥接模式的定义,就是将类的抽象部分和它具体的实现部分,进行按需分离,让他们可以进行独立的,有选择的变化,然后通过组合,建立起两个类直接的联系。

优点

将一个复杂的类分离出抽象部分和实现部分两个维度,完成...

设计模式-观察者模式

观察者模式是一种订阅模式, 可在被观察的对象事件发生时通知多个 “观察” 该对象的其他对象。这个就像 iOS 中的 observe,当被观察的对象变了,观察者就会收到通知,做出响应改变。

适用场景

当一...

小工具-线程安全字典

/// 线程安全字典 class ThreadSafeDictionary: Collection { private let queue = DispatchQueue(label: "XNTech.ThreadSafeDic...

小工具-线程安全数组

/// 线程安全数组 class ThreadSafeArray { private let queue = DispatchQueue(label: "XNTech.ThreadSafeArray", attribut...

小工具-任务线程组

/// 任务线程组 class TaskThreadGroup { /// 队列类型 enum QueueType { case concurrent(maxThreads: Int = -1) ...

Swift 排序算法

插入排序

通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

时间复杂度 最好 O(N) 平均、最坏 O(n^2)

空间复杂度 O(1)

fun...

Swift Runtime

Swift 运行时是支持 Swift 代码在应用程序执行期间运行的环境。它负责管理内存、类型信息、动态派发、反射等。它的主要功能是为 Swift 程序提供必要的支持,以便其在实际设备上运行。

1. 类型信息。可以使用 t...

Swift KVC

KVC(Key-value coding)是一种通过字符串键访问对象属性的机制。它允许在运行时动态地获取和设置对象的属性值。KVC 是 Objective-C 中的特性,但在 Swift 中也可以使用,前提是对象继承自 NSObjec...

Swift KVO

Swift 中的 KVO(键值观察)是一种用于观察对象属性变化的机制。当被观察的属性发生变化时,会通知观察者。在 Swift 中使用 KVO,需要类继承自 NSObject,并且需要使用 @objc dynamic 修饰要观察的属性。...