首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

肘子的 Swift 周报 #034 | WWDC 2024,AI 并非全部

预计本次大会上,SwiftUI 和 SwiftData 将获得重大功能提升,苹果也可能给出将 SwiftUI 定位为首要 UI 框架的明确信号。...尽管 SwiftUI 的架构中它扮演着至关重要的角色,相关文献却十分稀少。...本文中,Rens Breur 将展示如何通过堆栈跟踪来阅读和理解 AttributeGraph 的函数,以及如何利用 LLDB 命令行工具来调用和查看 AttributeGraph 的各种打印功能。...此外,文章还探讨了如何利用 AttributeGraph 的特性来优化和理解 SwiftUI 中环境变量和偏好( PreferenceKey )的更新机制,并提供了一些实用的调试技巧和函数,帮助开发者更深入地理解和使用...SwiftUI Mac 应用中的场景类型 ( Scenes Types in a SwiftUI Mac App )[11] Natalia Panferova[12] 使用 SwiftUI 构建 macOS

8010

肘子的 Swift 周报 #001

解密 SwiftUI 背后的 AttributeGraph[12] KyleSwifter[13] 在工作中,作者发现在 watchOS 10 上的某段代码会出现 AttributeGraph 的循环依赖错误提示...得益于字节跳动和作者对 SwiftUI 底层的研究,我们有机会窥探 AttributeGraph: cycle detected through attribute 问题出现的原因。...Kyle 不久前启动了 OpenSwiftUI[14] 项目,该项目的目标是创建尽可能接近 SwiftUI 原始 API 的实现。...作为 A Companion for SwiftUI[17] 的作者,Javier SwiftUI 发布初期就表现出对 SwiftUI 的动画和布局实现的浓厚兴趣,并通过博客展示了令人惊叹的研究成果.../ [11] 此处: https://objccn.io/products/thinking-in-swiftui-2023 [12] 解密 SwiftUI 背后的 AttributeGraph:

25840

肘子的 Swift 周报 | Swift,超越苹果生态!

在这个新版本中,首次非苹果平台复刻了 SwiftUI 框架的核心基础——AttributeGraph,从而具备了完整地将 SwiftUI 的优势全面带到其他平台的可能性。...Adaptive Text Color in SwiftUI based on Background[16] Pedro Rojas[17] 开发过程中,开发者时常遭遇这样一个问题:相同颜色的文字不同背景色上可能难以辨认...转向 AppKit 的过程中,他探讨了一些鲜为人知的 AppKit 组件,如 NSTableHeaderCell 等,并通过 NSViewRepresentable构建了 SwiftUI 与 AppKit...文章中,作者强调他的目的并非是要比较 SwiftUI 与 AppKit 的性能优劣,或者质疑 SwiftUI macOS 上的应用适用性。...实际上,该应用的复杂模板编辑器几乎完全使用 SwiftUI 开发,且表现出色。这一点彰显了 SwiftUI 实际应用中的强大潜力和灵活性。

12110

避免 SwiftUI 视图的重复计算

通过 _makeProperty 方法,SwiftUI 得以实现在将视图加载到视图树时,把所需的数据( 值、方法、引用等 )保存在 SwiftUI 的托管数据池中,并在属性图( AttributeGraph...当 SwiftUI 将视图加载到视图树时,通过调用 _makeProperty 完成将数据保存到托管数据池以及属性图中创建关联的操作,并将数据托管数据池中的引用保存在 _location ( AnyLocation...并且 SwiftUI 会在其变化时自动更新( 重新计算 )对应的视图。 SwiftUI 上有一个困扰了不少人的问题:为什么无法视图的构造函数中,更改 State 包装的变量值?...、应用性能表现、测试难易度等方面取得平衡 不存在完美的解决方案,即使像 TCA 这类的热门项目,面对切分粒度高、层次多的 State 时,也会有明显的性能瓶颈 视图的构造参数 尝试改善 SwiftUI...例如:当 SwiftUI 更新 ContentView 时,如果 SubView 的构造参数( name 、age )的内容发生了变化,SwiftUI 会对 SubView 的 body 重新求值(

9.2K81

ViewBuilder 研究(下) —— 从模仿中学习

(结构值,非 body 值)将被保存在 SwiftUI 的托管数据池中 根据视图的依赖信息 AttributeGraph 数据池中创建与当前显示的视图树对应的依赖图,并监控依赖的变化 依据 SwiftUI...这是因为 SwiftUI 诞生时,result builders 使用 buildIf 来处理不包含 else 的 if 语句。...我们可以通过如下的方式 SwiftUI 中验证上述代码: SwiftUI 环境中添加如下代码 public extension ViewBuilder { static func buildOptional...由于 SwiftUI 通过视图层次结构中的类型和位置来对视图进行标识,AnyView 将会擦除(隐藏)掉这些重要的信息,因此除非到了必须使用的地步,否则我们应尽量避免 SwiftUI 中使用 AnyView...开发者通过 Modifier 视图中表述自己的想法,SwiftUI 只会在布局和渲染时才会真正调用这些 modifier 的实现。

3K20

如何在Xcode下预览含有Core Data元素的SwiftUI视图

预览含有Core Data元素的视图时崩溃的出现次数会愈发频繁,某种程度上可能已经影响了开发者SwiftUI中使用Core Data的热情。...结合两年来我SwiftUI中使用Core Data的经验和教训,我们将在本文中探讨: •导致SwiftUI预览崩溃的部分原因•如何在之后的开发中避免类似的崩溃出现•如何在Xcode中安全可靠地预览含有...应用程序在运行至该视图时会直接崩溃SwiftUI提供的managedObjectContext环境值为视图中使用或操作Core Data元素提供了基础和便利。...常见的Core Data元素视图预览故障 应用程序可以正常执行的情况下,真正由于Core Data因素导致的预览崩溃的原因其实并不多。...希望本文对你SwiftUI中使用Core Data有所帮助。

5.1K10

构建稳定的预览视图 —— SwiftUI 预览的工作原理

由于预览崩溃的次数和场景的增加,一些开发者已经视预览为 SwiftUI 的缺点之一,并对其产生了排斥感。 预览功能真的如此不堪吗?我们当前使用预览的方式真的妥当吗?...欢迎大家 Discord 频道[2] 中进行更多地交流 让预览崩溃的一段视图代码 不久前,Toomas Vahter 写了一篇博客 Bizarre error in SwiftUI preview[3...下面这段代码可以真机和模拟器上运行,但会导致预览崩溃。...可惜的是,Toomas Vahter文章中没有告诉读者崩溃原因。我借用这段代码来与大家一起探究预览功能是如何工作的。...这就解释了这段代码为什么模拟器和真机中可以运行,但会导致预览崩溃。因为预览是以衍生代码作为入口,只依赖有限的导入信息对衍生代码进行编译,因此可能会出现因信息不完整而无法编译的情况。

49010

为什么SwiftUI的视图使用结构体?

UIKit中,每个视图都来自一个名为UIView的类,该类具有许多属性和方法:背景色,确定其放置方式的约束,用于将其内容呈现到其中的图层等等。...UIKit中,UIStackView是一种非渲染视图类型,旨在简化布局,但这意味着即使它因为继承的原因具有背景色,也​​从未真正使用过。...SwiftUI中,我们所有的视图都是简单的结构体,几乎可以自由创建。想想看:如果您制作一个仅包含一个整数的结构体,则结构体的整个大小就是:一个整数。没有其他的。...通过生成不会随时间变化的视图,SwiftUI鼓励我们转向更具功能性的设计方法:将数据转换为UI时,我们的视图变成简单的,惰性的东西,而不是会失去控制的智能化的东西。...提示:如果您在视图中使用类,则可能会发现代码无法编译或在运行时崩溃。 相信我:使用结构体。

3.1K10

SwiftUI 动画进阶 — Part 5:Canvas

然而,该视图产生的崩溃使这里的一些例子无法分享。虽然不是所有的问题都得到了解决,但现在每个例子都能顺利运行。文章的最后,我将指出我找到的一些解决方法。...Canvas 视图有一种引用 SwiftUI 视图的方式,将其解析为一个符号,然后绘制它。 要解决的视图是ViewBuilder闭包中传递的,如下面的例子所示。...每一列都被实现为一个单独的SwiftUI视图。叠加字符和用渐变绘图是由视图处理的。当我们画布上使用渐变时,起始/结束点或任何其他几何参数都是相对于整个画布的。...Canvas 崩溃 不幸的是,写这篇文章的时候,我遇到了 Canvas 的一些崩溃问题。幸运的是,它们每个测试版中都有很大的改进。我希望iOS15正式发布时,它们都能得到解决。...总结 我希望这篇文章能帮助你为你的SwiftUI动画工具箱添加一个新的工具。第五部分的动画系列到此结束。至少今年......谁知道WWDC'22会带来什么呢!

2.6K10

肘子的 Swift 周报 #036 | WWDC 2024 观后感

SwiftUI 初次接触 SwiftUI 今年的新特性时,我并未感到特别兴奋。然而,做了更多的研究后,我意识到此次更新 SwiftUI 的发展史上将具有十分重要的意义。...从这个版本开始,SwiftUI 开发团队似乎找到了快速发展 SwiftUI 的正确路径,探索出了保持声明式框架特性的同时,有效提升其表现力的方法。...这些改进显著提升了 SwiftUI 的能力上限,为高级开发者开辟了更广阔的技术实现空间。...随着 SwiftUI 与 UIKit 框架之间动画、转场和手势等机制的共享,SwiftUI 正逐渐从仅基于 UIKit/AppKit 的框架,转变为与苹果生态中其他 UI 框架更平等的合作伙伴。...这种情况最近几届 WWDC 中相对罕见。 我也清楚,许多开发者对 WWDC 推出的新功能不甚关心,认为这些新功能短期内与他们无关。

10610

为什么 SwiftUI 的视图使用结构体

UIKit 中,每个视图都来自一个名为UIView的类,该类具有许多属性和方法:背景色,确定其放置方式的约束,用于将其内容呈现到其中的图层等等。... UIKit 中,UIStackView 是一种非渲染视图类型,旨在简化布局,但这意味着即使它因为继承的原因具有背景色,也从未真正使用过。... SwiftUI 中,我们所有的视图都是简单的结构体,几乎可以自由创建。想想看:如果您制作一个仅包含一个整数的结构体,则结构体的整个大小就是:一个整数。没有其他的。...通过生成不会随时间变化的视图,SwiftUI 鼓励我们转向更具功能性的设计方法:将数据转换为 UI 时,我们的视图变成简单的,惰性的东西,而不是会失去控制的智能化的东西。...**提示:**如果您在视图中使用类,则可能会发现代码无法编译或在运行时崩溃

2.4K50

肘子的 Swift 周报 #022 | 忙碌的一周

而今,Swift 5.10 启用完整并发检查选项后,将强制语言的所有方面实施完全的数据隔离,以编译时检查为手段确保安全。...近期推荐 SwiftUI-First Architecture[7] Mike Apurin[8] 自 SwiftUI 问世以来,寻找最合适的架构便成为了广受关注的议题。...Mike Apurin 尝试传统框架模式后发现这些方法未能满足他的需求,因此他倡导了一种 “SwiftUI-first” 的架构理念。...他所推崇的 SwiftUI-first 架构,强调了灵活性与可扩展性,鼓励开发者充分利用 SwiftUI 的最新功能,并根据各自项目的需求灵活调整架构,以达到最佳的应用表现。...虽然介绍特定优化技巧的文章不在少数,但像本文这样对整个应用优化过程进行深入分析的内容却相对罕见,对开发者而言具有极高的参考价值。

8910

开发人员需要了解的 iOS 14 beta 5 更新

开发者可以 设置 -> 通用 -> 软件更新 中安装更新。...用户也可以输入时间,也可以通过滚轮来调整时间,不过滚轮是直接嵌输入框中; 调整了 HomeKit 控制中心的 “收藏夹” 组织方式及图块的大小; 设置 中,添加了禁用应用程序“照片” 中隐藏相册的功能...如果启用了该通知,则受支持的应用程序启动时,会在顶部收到通知,所以用户可以自行选择是否启用; 设置 中新增了针对开发人员的 App Clip 新测试功能; 新的小部件位置访问请求的; 快捷指令...之前向已移除的观察者发送信号时,会导致难以诊断的崩溃问题,现在则会产生一个异常,指出需要 removeObserver(_:) 哪些对象。...这让绘制网格的顺序更能影响最终图像; 可以使用 INMediaUserContext, Core Spotlight, 和 Intents 来改善多媒体交互应用; SwiftUI 除了解决了部分问题外,

96610

探讨 SwiftUI 中的几个关键属性包装器

在这篇文章中,我们将探讨几个 SwiftUI 开发中经常使用且至关重要的属性包装器。本文旨在提供对这些属性包装器的主要功能和使用注意事项的概述,而非详尽的使用指南。...@State @State 是 SwiftUI 中最常用的属性包装器之一,主要用于视图内部管理私有数据。它特别适合存储值类型数据,如字符串、整数、枚举或结构体实例。...复杂的视图层级中,逐级传递 @Binding 可能导致数据流难以追踪,此时应考虑使用其他状态管理方法。 确保 @Binding 的数据源是可信的,错误的数据源可能导致数据不一致或应用崩溃。...由于默认值的存在,@Environment 不会因缺少值而导致应用崩溃,但由此也容易产生开发者忘记注入值的情况。...这减少了因遗漏数据注入而导致的应用崩溃风险。 Observation 框架的背景下,@State 和 @Environment 成为了最主要的属性包装器。

20610

SwiftUI 与 Core Data —— 安全地响应数据

保证应用不因 Core Data 的原因导致意外崩溃是对开发者的起码要求。...SwiftUI 与 Core Data —— 问题[1]SwiftUI 与 Core Data —— 数据定义[2]SwiftUI 与 Core Data —— 数据获取[3]可以 此处[4] 获取演示项目...并没有出现崩溃的情况。难道我们上面的论述都是错误的?由于 Core Data 模版代码中,只使用了一行代码来声明次级视图:Text("Item at \(item.timestamp!... convertToValueType 中为属性提供备选值,是否可以避免出现崩溃的情况?答案是,原始的版本仍可能会出现问题。..._object.convertToValueType() }}如此一来,便可以通过视图代码使用 if let 来保证不会出现上文提到的崩溃问题:public struct Cell: View

3.3K20
领券