玩转 Xcode Playground(上)

2025-03-12 13:54:42124 次浏览

最佳答案

在 Swift 语言诞生的同一年,苹果在 Xcode 中整合了 Playground 功能。相较于标准的 Xcode 项目,Playground 启动速度快、使用便捷,广泛应用于 Swift 语言学习、框架 API 测试、快捷数据处理、灵感汇集等领域。此系列文章将深入探讨 Xcode Playground 的使用技巧,涵盖稳定性、第三方库集成、资源管理、异步处理、文档标注等方面,旨在帮助读者掌握 Playground 的使用,使其成为工作学习中的得力工具。

原文发布于博主的“肘子的 Swift 记事本”博客。由于技术文章需要不断迭代,从 2024 年起,新文章将仅在博客上发布。

本文将重点介绍 Playground 的创建与设置、以及不同版本(.playground vs .playgroundbook)的区别。在 Xcode 中创建的 Playground 项目以 .playground 结尾,可直接在 Xcode 和 Swift Playgrounds 3.x 以上版本中打开。.playgroundbook 是 Swift Playgrounds 特有的包格式,包含更多功能,主要用于改善教育和娱乐体验。

Swift Playgrounds 创建的项目默认保存在 iCloud 云盘的 Playgrounds 目录中。建议避免同时在 macOS 的 Xcode 和 iPad 的 Swift Playgrounds 上编辑同一项目,以防版本冲突。

如何创建 Playground 项目?在 Xcode 中,通过点击“文件”菜单并选择“新建”下的“Playground”即可创建一个 .playground 格式的项目。Xcode 提供多种预置模版,选择时仅影响模版代码,不自动设置 Page 运行环境。在创建后,可以通过“文件”菜单或导航栏上的右键创建新 Page。Playground 鼓励将议题分散到不同 Page,以组织代码和资源。

在 Swift Playgrounds 中创建 Playground 项目时,需选择“查看全部”并选择“Xcode Playground”模版。创建后,项目默认保存在 iCloud 云盘的 Playgrounds 目录中。为避免版本冲突,不建议同时在 Xcode 和 Swift Playgrounds 上编辑同一项目。

如何在单个或多个 Page 中创建 Playground 项目?在单个 Page 模式下,仅有一个 Page,且 Page 和 Playground 项目合并显示。在多 Page 模式下,通过在 Xcode 中点击导航栏的 Playground 项目右键或通过“文件”菜单创建新 Page。单 Page 和多 Page 模式下,除项目根目录外,每个 Page 都有自己的 Sources 和 Resources 目录。

如何在 Playground 中调试代码?Playground 不支持设置断点,但可通过指定执行结束点或单步执行来调试代码。在 Xcode 中,通过点击代码左侧行数上的执行按钮指定结束位置,长按执行按钮切换运行模式。Swift Playgrounds 提供单步执行功能。

提高 Xcode 下的运行稳定性,可以通过在 Playground Settings 中设置运行环境。建议在没有必须依赖 iOS 框架代码的情况下设置为 macOS 运行环境,以减少不稳定情况。设置后,每个 Page 可单独设置运行环境,或统一设置为同一环境。

如何在 Xcode 中将运行方式改为手动?在自动运行模式下,每次修改代码后系统会自动运行。切换为手动模式后,仅在手动触发时运行代码,提高系统资源利用效率。

在 Xcode 中,Playground 拥有结果栏,显示代码的当前值、历史状态、调用次数等信息。通过鼠标操作,可切换 QuickLook 内容显示模式,以提高代码执行效率。Swift Playgrounds 与 Xcode 类似,可通过关闭“启用结果”功能提高效率。

如何创建自定义 QuickLook?通过遵循 CustomPlaygroundDisplayConvertible 协议,可为 Playground 提供自定义显示效果。例如,将 AttributedString 转换为 NSAttributedString,实现正确的 QuickLook 显示。

PlaygroundSupport 是用于扩展 Playground 的框架,提供共享数据、管理实时视图等功能。在需要的 Playground Page 中导入 PlaygroundSupport 框架。在 Swift Playgrounds 中,为获得异步执行结果,需要导入 PlaygroundSupport 并设置 needsIndefiniteExecution 为 true。

如何创建实时视图?通过导入 PlaygroundSupport 并设置当前页面的实时视图,可将互动性元素添加到 Playground 中。实时视图支持 SwiftUI 和 UIKit(AppKit)的视图和视图控制器。在设置了实时视图后,Playground 自动将 needsIndefiniteExecution 设置为 true。

如何让其他类型的实例在实时视图中显示?遵循 PlaygroundLiveViewable 协议的类型实例可以显示在实时视图中。例如,将 UIBezierPath 实例显示在动态视图中。

获取 Playground 的共享目录(playgroundSharedDataDirectory)可实现资源在不同 Page 间的共享。在 macOS 模式下,目录位于用户文档目录下的 Shared Playground Data 子目录。通过此目录,可在不同 Playground 项目之间共享数据。单个 Playground 项目中,通过 Resource 目录在 Page 间共享资源。

本文介绍了 Xcode Playground 的创建与设置、不同类型的创建方式、调试技巧、提高运行稳定性的方法、创建实时视图以及如何让其他类型实例在实时视图中显示等内容。在下篇文章中,我们将深入探讨有关 SPM、资源管理、辅助代码、文档标注等方面的知识。希望本文能对您有所帮助,订阅博客以获取更多 Swift、SwiftUI、CoreData 和 SwiftData 的最新文章和资讯。

声明:知趣百科所有作品均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请在页面底部查找“联系我们”的链接,并通过该渠道与我们取得联系以便进一步处理。