首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Swift
项阿丑
创建于2026-01-27
订阅专栏
Swift相关知识整理
等 6 人订阅
共381篇文章
创建于2026-01-27
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
7-22.【高级特性】泛型约束对编译时间、ABI 和性能有何影响?
泛型约束的设计不仅决定了代码的灵活性,更是 Swift 编译速度、二进制体积 (ABI) 和 运行效率 之间权衡的核心。 1. 对编译时间的影响:类型推断的压力 泛型约束越复杂,编译器的 Constr
7-21.【高级特性】泛型函数、泛型 struct 与 associatedtype 的组合使用有哪些设计技巧?
在 Swift 的进阶设计中,泛型函数、泛型 Struct 与 associatedtype 的组合使用,实际上是在构建一套“编译期协议框架”。这种组合能让你写出既有强类型安全,又具备极高抽象能力的组
7-20.【高级特性】泛型约束 (T: Equatable, T: AnyObject) 与 where 子句的区别与适用场景?
在 Swift 中,泛型约束有两种主要的表达方式:**内联约束(Inline Constraints)**和 where 子句(Where Clauses) 。 虽然它们在很多情况下可以互换,但它们的
7-19.【高级特性】opaque type 可以用于协议吗?什么时候不能使用?
简单来说:some(Opaque types)可以用于协议,但它的用法和限制与“谁来决定具体类型”密切相关。 在 Swift 中,some 的本质是反向泛型。它的核心规则是:具体类型必须在编译期由“实
7-18.【高级特性】SwiftUI 中为什么很多 API 采用 some View 而不是 View?
在 SwiftUI 中使用 some View 而不是直接使用协议名 View(或者 any View),主要涉及三个核心维度的考量:类型系统的完整性、性能优化的极致要求以及视图身份(Identity
7-17.【高级特性】Existential type (any) 如何在 runtime 保存类型和 witness table?
在 Swift 运行时(Runtime),any 类型(即 Existential Type)的存储和分发是由一个名为 Existential Container(存在容器) 的结构体负责的。 为了让
7-16.【高级特性】Opaque type (some) 的类型信息在编译期和运行期如何体现?
理解 some (Opaque Types) 的关键在于:它是编译期的“强约束”,运行期的“真面目”。 我们可以从“谁知道这个类型”的角度,来看它在两个阶段的表现。 1. 编译期 (Compile-t
7-15.【高级特性】some View 与 any View 的本质区别是什么?
在 SwiftUI 开发中,理解 some View 和 any View 的区别,就像是区分“戴着面具的特定人”和“一个能装任何人的大盒子”。 虽然它们都处理协议(Protocol),但底层的处理逻
7-14.【高级特性】为什么返回 Never 可以帮助编译器进行优化?
返回 Never 并不只是给开发者看的“语义标记”,它对编译器(Swift Compiler)来说是一个非常强烈的信号。 在 Swift 的编译流程中,编译器会将代码转换为 SIL (Swift In
7-13.【高级特性】Never 类型在泛型和控制流中有什么作用?
Never 是 Swift 中一个非常特殊的存在,它被称为 "Bottom Type"(底类型) 。它的定义非常简单,但也非常霸道:它是一个没有成员的枚举(Empty Enum) 。 这意味着你永远无
7-12.【高级特性】Existential Container 在使用 Any 类型时如何存储值和引用?
在 Swift 底层,Any 类型的变量并不是直接存储数据的,而是通过一个被称为 Existential Container(存在容器) 的结构来管理的。 由于 Any 可以代表任何类型(从小型的 I
7-11.【高级特性】Any 和 AnyObject 的本质差异是什么?
在 Swift 开发中,Any 和 AnyObject 看起来很像,但它们的底层逻辑和适用场景有着本质的区别。简单来说,一个是全能选手,一个是类专属选手。 1. 核心定义 Any (万能类型) Any
7-10.【高级特性】如何用 Swift 的内存模型分析频繁复制或 ARC 压力问题?
一、先建立分析心智模型(非常关键) Swift 中只有两类“慢源头” 值类型路径 struct / enum 问题来源:复制、stride、COW 失效 引用类型路径 class / closure
7-9.【高级特性】ARC 会对 stack-allocated 引用类型做哪些优化?
一、先澄清一个关键误区 ❌ 误区: ✅ 真实情况: Swift 编译器在 SIL 层有非常激进的 ARC 优化。 二、ARC 能对“栈分配 class”做什么优化? 1️⃣ 核心前提:Escape A
7-8.【高级特性】对于大 struct,如何避免性能问题?
一、先给结论(面试版) 解决思路只有三类: 减少拷贝 减少内存占用 / stride 减少写入路径 二、先定义什么是「大 struct」 一般认为满足任意一条就要警惕: size ≥ 64 bytes
7-7.【高级特性】enum 带关联值时,底层如何存储 discriminant 与 payload?
一、先给一个抽象模型(便于理解) 对一个带关联值的 enum: 逻辑模型可以理解为: payload:能容纳“最大 case”的那块内存 discriminant / tag:当前是哪一个 case
7-6.【高级特性】class、struct、enum 的内存占用和对齐规则是什么?
一、Swift 内存布局的三条基本规则(先背) 对齐(Alignment)= 最大字段对齐 Size = 字段 size + padding(向对齐取整) Stride = size 向 alignm
7-5.【高级特性】引用类型的循环引用是如何形成的?如何利用 weak/unowned 打破?
一、循环引用是如何形成的? 1️⃣ ARC 的工作前提 ARC 只做一件事:统计强引用数量 引用计数 > 0 → 对象存活 引用计数 = 0 → 对象释放 ARC 不会分析引用关系图,也不会自动打破环
7-4.【高级特性】struct 在 SwiftUI 中为什么是首选?与性能和 diff 有何关系?
一、先给终极结论(面试版) 换句话说: 二、SwiftUI 的 View 到底是什么? ⚠️ 关键点: View 不是屏幕上的控件 不是 UIView 它只是一个: 每次状态变化,SwiftUI 会:
7-3.【高级特性】copy-on-write (COW) 是如何实现的?适用于哪些类型?
一、一句话先给结论 目的只有一个: 👉 既保留值语义,又避免不必要的拷贝成本 二、COW 的底层实现原理 1️⃣ 核心结构:值类型 + 引用类型的“混合体” 以 Array 为例(高度简化): Arr
下一页