DEVELOPMENT NOTES · 15 篇

Swift 与运行时

从 Swift 2、Swift 3 的学习笔记,到 Objective-C 运行时与设计模式,这里保留的是理解语言行为的过程。语法会变化,追问“这段代码为什么这样执行”仍然有用。

怎么读这一组

  1. 初读可从协议代理、Block 与 Swift 常见陷阱开始,先分清值、引用、闭包捕获和对象生命周期。
  2. 看 runtime 文章时,按属性与变量、消息机制、字典转模型的顺序梳理;把运行时能力与具体项目里是否需要使用分开考虑。
  3. 模板、单例、享元与职责划分适合对照阅读。先写出要解决的重复代码或共享状态问题,再判断模式是否合适。

这是 2015–2017 年的历史记录,示例未在本次整理中重新运行验证。先核对文章日期和版本说明,再决定哪些思路适合当前项目。

主题文章

15 篇 · 新到旧
  • iOS开发之位运算

    从按位与、或、异或和取反讲起,以 RGBA 颜色打包及状态标志为例展示位运算用途,再说明如何用枚举与掩码保存和查询多个状态。

    Sindri位运算 · 位掩码 · RGBA
  • iOS开发之均衡代码职责浅谈

    围绕 MVC 中控制器过于庞大的问题,用项目示例讨论视图、模型和控制器的职责分配,提取重复逻辑并调整功能归属,强调在更换架构名称之前先理清代码责任。

    SindriMVC · 职责划分 · 重构
  • Swift3.0学习系列之Swift实战-单例模式

    介绍 Swift 单例的用途与代价,通过类内静态常量和全局常量两种形式创建共享实例,说明私有构造器、跨模块访问,以及共享可变状态仍需考虑线程安全。

    SindriSwift 3.0 · 单例模式 · static let
  • Swift3.0学习系列之Swift实战-享元模式

    以共享本地数据管理对象为例介绍享元模式,使用字典复用已加载的数据并记录使用次数,在无人使用时保存和释放,讨论它与始终保留单例对象的差别。

    SindriSwift 3.0 · 享元模式 · 对象复用
  • iOS开发之协议代理

    以 UITableView 和自定义控件为例区分协议与委托,比较 delegate 和 block 回调的使用场景,再讨论数据源与协议抽象如何帮助对象之间减少耦合。

    Sindriprotocol · delegate · block
  • 菜鸟进化史之RunTime实战字典转模型

    从逐项赋值、KVC 和第三方模型库的使用经历出发,编写 NSObject 分类遍历运行时信息,把字典映射为模型,并说明示例对两层嵌套数据的处理范围。

    BisonObjective-C Runtime · 字典转模型 · KVC
  • iOS开发之去model化开发

    面对字段不同但展示相近的多种票券数据,使用字典承载数据并通过协议暴露统一展示属性,让 Cell 与控制器减少对具体模型类型的依赖,讨论数据转换职责的放置。

    Sindri协议 · 去model化 · MVC
  • iOS开发Swift实战之模板模式

    以商品数据和计算逻辑为例,分析代码对元组结构的依赖,再用类型与协议组织可复用的处理方式,讨论如何通过抽象减少参数形式和业务方法之间的耦合。

    SindriSwift · 模板模式 · 协议
  • iOS开发之从源代码看OC的消息机制runtime

    从 unrecognized selector 错误切入 Objective-C 消息机制,结合源码讨论方法查找、缓存与消息转发,再通过运行时相关示例理解方法调用如何在执行阶段完成。

    SindriObjective-C Runtime · 消息发送 · 方法缓存
  • runtime实战之一键改变字体

    从注册自定义字体和查找字体名称开始,利用 Objective-C 运行时方法处理界面字体替换,并讨论代码创建控件与 storyboard 控件在统一设置时的差别。

    HenryChengObjective-C Runtime · 自定义字体 · UIFont
  • iOS开发之学习block深入浅出

    从 block 的声明和调用方式讲起,讨论捕获外部变量与回调封装,再通过模仿 Swift 高阶函数的例子展示 block 在 Objective-C 数据处理中的用法。

    Sindriblock · 变量捕获 · Objective-C
  • iOS开发之重构笔记-Extra Method

    结合《重构》的提炼函数方法,把冗长代码按意图拆成独立函数,逐步处理参数、局部变量和返回值,并用实际示例讨论如何降低重复逻辑和提升可读性。

    SindriLin重构 · Extract Method · 函数提炼
  • 详解Swift中的七个陷阱以及避免方法

    通过具体代码讨论 Swift 协议扩展、可选链赋值和函数式处理中的易错行为,比较值类型与引用类型的分派差异,并总结如何避免编译通过却不符合预期的结果。

    bestswifterSwift · 协议扩展 · 可选链
  • iOS开发黑魔法KVO的奥秘

    以监听列表滚动偏移为入口介绍 KVO,分析观察者注册后动态子类与 isa 指针的变化,并借助运行时函数尝试实现相似机制,串起使用方式和底层原理。

    SindriLinKVO · isa · 动态子类
  • 黑魔法runtime基础之属性与变量

    区分 Objective-C 属性与成员变量,结合运行时结构、地址偏移和 synthesize 分析属性的生成方式,再通过示例说明动态检查与操作对象结构的用途。

    SindriLinObjective-C Runtime · property · ivar