首页

071

用 Swift 来构建安卓应用 - #071

用 Swift 来构建安卓应用

2025 年 2 月 18 日 Issue #071
近日,Swift 社区成立了 Swift on Android Community Workgroup,旨在推动 Swift 在 Andro...
探索本期内容
从 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 行为陷阱,并提供临时的应对策略。


Core Data 的模型继承
2024 年 12 月 11 日 #SwiftData #Core Data

Core Data 的一个卓越特点是让开发者能够以更加接近面向对象编程的方式声明数据模型,同时无需关心底层的存储实现细节。在这个框架中,模型继承是一个尤为重要的机制。本文将深入探讨模型继承的核心概念,包括父实体(Parent Entity)、子实体(Sub Entity)和抽象实体(Abstract Entity);我们将分析它们的优缺点,并探讨在不直接使用这些功能时如何实现类似的效果。


Typefully:轻松告别繁琐的社交媒体发布
2024 年 12 月 4 日 #Tools #Life

随着社交媒体渠道的日益丰富,一个网络用户不知不觉间已拥有多个不同的社交账号。对于内容创作者和企业账号管理者而言,在各个社交平台上发布内容所需的准备工作正变得愈发繁琐。在过去的一个月里,我开始尝试使用 Typefully 来统一管理和发布多个社交平台的内容,本文中我将分享我的使用心得。


有意为之还是技术缺陷?SwiftUI 多层导航中的 onChange 异常
2024 年 11 月 27 日 #SwiftUI

SwiftUI 提供的 onChange 修饰器,使开发者能够在视图中监听特定值的变化,并在值发生改变时执行相应的操作。直觉上,只要某个视图位于当前可见的视图树分支中( 活动中 ),在观察的值发生变化时,对应的闭包就应该被触发。但在某些特定的导航场景下,onChange 修饰器似乎会“选择性失聪”,明明观察的值发生了变化,却诡异地保持沉默。这究竟是苹果精心设计的特性,还是一个隐藏已久的代码缺陷?本文将揭示这一现象并对开发者给予必要的提醒。


在 SwiftData 和 Core Data 中用 Transaction 代替 Save
2024 年 11 月 20 日 #SwiftData #Core Data

在数据持久化操作中,确保数据的一致性和完整性至关重要。SwiftData 框架通过在 ModelContext 中引入 transaction 方法,为开发者提供了一种更优雅的方式来组织和管理数据操作。本文将探讨如何运用事务(Transaction)的概念来构建更可靠、高效的持久化操作。