onAppear 是 SwiftUI 的关键生命周期方法,但在某些情况下可能异常调用,导致性能问题和状态变化。文章分析了两个具体问题,指出这是影响 iOS 15 及之后版本的 Bug。为解决此问题,建议使用一次性调用的 onAppear 或基于状态的版本,以避免重复调用。尽管 SwiftUI 仍存在不一致性,但随着使用增加,未来可能会改善。
本文通过SwiftUI 4的新API证明了onAppear修饰符在布局之后、渲染之前被调用。通过添加代码判断视图的求值、布局和渲染阶段,可以确定onAppear的调用时机。第一段代码出现数组越界错误是因为视图还未进入布局阶段,可以通过判断数组是否为空来避免错误。第二段代码可以正常运行是因为在布局后调用了onAppear闭包给数组赋值,导致视图重新刷新。通过这些证据可以确认onAppear确实是在布局之后、渲染之前被调用的。
onAppear( task )是 SwiftUI 开发者经常使用的一个修饰符,但一直没有权威的文档明确它的闭包被调用的时机。本文将通过 SwiftUI 4 提供的新 API ,证明 onAppear 的调用时机是在布局之后、渲染之前。
完成下面两步后,将自动完成登录并继续当前操作。