首页

076

给毛孩子照相 - #076

给毛孩子照相

2025 年 3 月 24 日 Issue #076
我有一只 13 岁的狗狗和一只六岁多的猫咪。这些年来,我几乎每年都会带狗狗去宠物照相馆拍照,但由于猫咪过于社恐,一直不敢带他出门拍照。近一年...
探索本期内容
使用 Proxyman 拦截和模拟 iPhone 应用的网络请求
2025 年 3 月 19 日 #Swift #Dev Tools

在互联网时代,开发者日益频繁地与网络数据打交道。正如我们依赖 IDE 的调试功能来优化代码一样,网络调试工具已成为我们快速、高效地学习、研究和分析网络数据不可或缺的助手。本文将介绍如何利用 Proxyman 来捕获 iPhone 应用的网络请求信息,并通过提供 Mock 数据来模拟服务器响应,帮助开发者在不依赖真实服务器的情况下进行应用测试与开发。


SwiftData 使用前必须了解的关键问题
2025 年 3 月 12 日 #SwiftData

本文旨在为对 SwiftData 感兴趣的开发者提供一份指南,帮助你了解 SwiftData 的优势与局限,并根据项目需求做出明智的技术选择。无论你是考虑在新项目中引入 SwiftData,还是计划从其他持久化方案迁移,以下内容都将为你的决策提供有价值的参考。

让 @State 实现懒加载
2025 年 3 月 5 日 #SwiftUI

Observation 框架为 Swift 带来了原生的属性级观察能力,有效避免了 SwiftUI 中因无关属性变化而引发的多余视图更新,从而提升了应用性能。但由于 @State 并未提供类似 @StateObject 的懒加载构造方式,在某些场景下会因实例过早构建而引起性能损失甚至逻辑问题。本文将探讨如何为 Observable 实例定制一个支持懒加载的 @State 解决方案。


Animatable 协议:让 SwiftUI 动画不再“失控”
2025 年 2 月 26 日 #SwiftUI

在 SwiftUI 开发中,你是否遇到过看似正确的动画代码却无法按预期工作的情况?或者在某些 iOS 版本上完美运行的动画,却在其他版本上表现异常?这些令人困扰的动画问题往往可以通过一个强大而低调的工具来解决 —— Animatable 协议。


从 Host 到 Serverless: 博客架构升级实践
2025 年 2 月 19 日 #Web

在过去的一个半月里,我对博客进行了一系列的调整,涉及发布机制、代码架构和版式设计等多个方面。这些调整不仅提升了博客的性能和用户体验,也让内容维护和更新变得更加高效。本文将简单记录一下本次调整的主要内容。


精确掌控 SwiftUI 滚动:自定义 Paging 实现
2025 年 2 月 12 日 #SwiftUI

从 iOS 17 开始,SwiftUI 引入了 scrollTargetBehavior,让开发者能够更精准地控制滚动行为。无论是实现视图停靠对齐,还是自定义翻页效果,scrollTargetBehavior 都提供了强大的支持。更重要的是,开发者可以通过自定义 ScrollTargetBehavior 来满足特定的需求。本文将从一个实际案例出发,逐步解析如何使用 scrollTargetBehavior,并最终实现一个自定义的滚动控制逻辑。


为何 Swift 6 中某些视图修饰器无法使用 @State 属性
2024 年 12 月 24 日 #SwiftUI #Swift

在 Xcode 16 中,为了改善 SwiftUI 在 Swift 6 模式下的表现,苹果对 SwiftUI 框架的 API 进行了多项调整,以满足更严格的并发检查要求。其中最显著的变化是将 View 协议全面标注为 @MainActor。这些优化虽然总体上改善了开发者在 Swift 6 模式下的编程体验,但也在某些特定场景中引发了一些看似反常的编译错误。本文将详细探讨为什么某些视图修饰器中无法直接使用 @State 属性值,并提供相应的解决方案。


SwiftUI onAppear 异常调用的陷阱与应对策略
2024 年 12 月 18 日 #SwiftUI

onAppear 是 SwiftUI 中极其关键的生命周期方法,用于在视图呈现时注入关键逻辑。由于视图实例可能会频繁地被创建和重建,开发者通常会选择在这些方法中准备数据、执行初始化操作。理论上,这些生命周期方法的调用时机应当是可预测和一致的。然而,在某些特定场景下,onAppear 可能会出现非预期的、不必要的调用,这不仅可能导致性能开销,更可能引发应用状态的不可控变化。本文将揭示这一容易被忽视的 SwiftUI 行为陷阱,并提供临时的应对策略。