一、版本说明

XCode 15 beta 发布于 2023 年 6月5日, 可支持 macOS 13.3 或以上版本, 你可以按需下载需要的平台。

二、新增特性

1.代码智能提示 (Code completion)

•创建新的文件在引用时的提示

首先创建一个新的文件

然后,在引用的地方,输入文件首字母会立即自动弹出补全提示。

  • 函数调用时列出所有可能的参数排列

在没有提示的情况下,调用函数时如何传参往往是比较困难的,不知道可以传哪些参数, 现在 XCode 将列出所有可供选择的可能,你可以更轻松找到合适的参数列表并选择它。

  • 自动分析代码上下文,并给出最合适的建议。

例如在 Text 组件调用中,输入"点号" 后,在弹出的提示列表中的最上方会提示 font (此时 Text 还没设置 font ),这是因为XCode分析了上下文,“识别出” 这是一个 Text, 并且此时还没有设置过字体,你可能需要它,因此将字体放在建议的最上方。

2.资产文件作为变量引用 (Asset catalogs)

过去资产文件如图片是以 “字符串” 作为图片名称在代码中被引用,现在直接通过类似变量的标识符去引用它,它可以接受编译时的检查。

  • 资产引用的编译检查

修改资产的名称为 “MultipleClouds ” 后,引用处产生了编译错误

这是因为此前资产的名称是 "clouds", 现在,编译器提示你修改它为 "MultipleClouds"。

  • 代码中引用图片资产的智能推荐

编辑资产的名称时,可以获得XCode 的智能推荐。

3.本地化资源集中管理 (Localization)

  • 旧项目的本地化文件迁移

XCode 设置中 选择 Edit > Convert to string catalog, 此时 XCode 会自动扫描工程中的 storyboards、.strings、 以及 .stringsdict 类型的文件。并将其列在下图所示的列表中,你可以根据需要选择部分或全部文件进行迁移。

迁移完成后,所有的本地化翻译将被整合到一个 Localization 目录中,你还可以查看到不同语言翻译的进度。

  • 追踪代码中的字符串变化

每次构建时,XCode 会自动提取代码中的所有字符串。当添加新字符串或删除某个字符串时,本地化目录会标记出受影响的地方,并给出 “陈旧” 和 “新增” 的标记进行凸显,从而提示你去翻译或者删除它。

4.文档 (Documentation)

  • 新的文档卡片样式

  • 文档小助手

选择小助手,然后选择文档预览。

左边是代码,右边可以看到对应的文档,你可以实时编辑和预览,这看起来有点像 MD。

5.新增 Swift 宏 (Swift macros)

系统部分框架已经实现了宏,如 Swift standard library、foundation、 以及一个新的 Swift data framework.

  • 创建宏包 (macro package)

使用快捷键 Command-Shift-A, 然后在弹出的输入框中输入 New package 可以快速创建一个带有样例代码的宏包,你可以修改并实现它。

然后选择 Swift Macro

以下是一个已经实现的宏包 EnumHelper,而CaseDetection 被实现为一个宏,宏的代码和一般的 swfit 代码没什么大的区别。

以下是引用了宏包 EnumHelper 中的宏 @CaseDetection,它默认会隐藏了宏实现,

  • 展开宏和断点调试

当你需要时,你可以选择展开宏,通过 Editor > Expand Macro 可以展开它。

展开后,还可以使用断点,如下图所示:

6.运行时预览 (Previews)

  • 基于宏快速创建一个预览实例

使用宏 #Preview 快速创建一个预览实例, 在右侧边栏可以看到预览效果。

以下继续添加了一个带名称的预览实例,当有多个预览实例时,可以在右侧边栏的左上角切换tab 预览对应实例。

  • AppKit 及UIKit 的预览支持

为了兼容非SwiftUI 的代码,可支持对旧工程的 Appkit 及 UIKit 添加预览。

  • Widget 预览支持

7.书签功能 (Bookmark)

  • 添加书签

你可能经常会遇到忘记此前关注或使用的一些重要代码,在你想要找到之前的那些代码时,你发现没有办法快速找到它。现在,通过添加可命名的书签来标记他们。

添加完成后,书签被展示在左边栏的书签tab下。

  • 书签分组

你可以将多个书签打包成一个组,作为有关联性的代码。

你也可以设置一个组名,便于搜索和理解。

  • 设置为代办或完成

你可以将书签作为任务来管理,比如你可以将书签设置为完成状态,它将会在左侧显示一个对勾。

8.代码版本控制 (Source Control Navigation)

  • 版本控制面板

在新的面板中,所有的版本改动将集中在一个文件中一起预览,通过上下滑动可以看到多个文件的修改内容,从而避免来回切换修改的文件。

修改的预览是可交互的,你可以通过操作来扩大预览区域,从而查看当前修改处的更多上下文。

除了预览,你还可以直接在当前界面下继续编辑,编辑完成后,可以提交 commit,然后push。

可通过左侧的竖条修改状态。

小结:代码修改的预览、编辑、提交、推送都在同一页面下,减少不必要的界面切换,操作更便捷。

9.测试 (Testing)

  • 测试面板

Apple 对新的测试面板使用Swift 进行了重写,提速了45%,下图案例列出了测试计划中的测试用例。

  • 查看测试结果

测试结果的整体统计信息看起来简明扼要,主要包括:

Top Insights: 分析测试结果,给出一些问题分析的建议,包括错误的原因、分布、最耗时的测试用例。

Tests: 展示测试用的统计数据,包例成功率,按机型、语言分类,以及错误列表。

  • 可交互的测试用例回放

测试用例的详情信息可以被查看,它展示了自动化的测试步骤,以及标出发生错误的节点,你可以通过以上信息来帮助找出问题的原因。

10.调试 (Debugging)

  • 控制台引入 OSLog 的支持

OSLog 可用来很好的捕获运行时信息。它可定义及收集结构化的日志信息,使日志看起来井井有条,接下来让我们看看如何使用它。

首先,使用 OSLog 编写一段日志:

默认情况下,日志的元信息是被隐藏的,仅显示开发者输入的日志信息,控制台中对不同严重程度(如 info、 notice 、error 等)的日志,标记为不同的颜色以示区分。

你可以选择性的添加展示日志的分类,包括子系统类别等元信息。

还可以过滤不同严重程序的日志。

最后,我们可以通过操作某条日志,跳转到日志代码定义处。

11.分发 (Distributing)

  • 新增 TestFlight 包的备注信息

你可以给 TestFlight 的包添加一些附属的备注信息,例如需要测试哪些内容的说明,这些信息会被展示给获取 TF包的测试者。

  • 查看框架签名

XCode 引入了XCFrameWork 可以对签名的框架进行验签,从而显示其来源,并保障其完整性不被破坏,从而建立框架的信任机制。

  • 隐私清单

框架作者可以给自己的框架添加隐私清单,来说明隐私的使用情况和如何保护敏感数据。隐私清单会与框架捆绑一起签名,因此,隐私清单是可被信任的。

来看看下图所示的隐私清单:

你可以使用XCode可以生成和查看完整的隐私报告

  • TestFlight 仅分发到内部测试

当修复问题时,你不希望测试包被真实用户看见,这时你可以通过勾选 “仅分发给内部测试” 然后只分发给自己公司或团队的测试者 ,这样可以防止被误发给共测用户。

以下是另外一个操作内部测试的路径

三、总结

XCode15 在开发效率和性能、安全提升上主要表现为以下概括的内容:

更简洁: 主要体现在宏、文档、和日志上。

更智能: 提升自动补全代码能力、提升测试分析能力。

更便捷: 包拆分下载、代码补全、书签、git集中管理,本地化集中管理。

更安全: 图片资产符号化管理, 通过对框架和隐私的处理,使得代码更加安全。

作者:京东零售 王晰源

来源:京东云开发者社区

WWDC2023 Session系列:探索XCode15新特性的更多相关文章

  1. 前端进阶系列(三):HTML5新特性

    HTML5 是对 HTML 标准的第五次修订.其主要的目标是将互联网语义化,以便更好地被人类和机器阅读,并同时提供更好地支持各种媒体的嵌入.HTML5 的语法是向后兼容的.现在国内普遍说的 H5 是包 ...

  2. Java系列 - 用Java8新特性进行Java开发太爽了

    本人博客文章网址:https://www.peretang.com/using-java8s-new-features-to-coding-is-awesome/ 前言 从开始写博客到现在已经过去3个 ...

  3. Java系列 – 用Java8新特性进行Java开发太爽了(续)

    本人博客文章网址:https://www.peretang.com/using-java8s-new-features-to-coding-is-awesome-2/ 前言 上周, 我们谈论了关于Ja ...

  4. iOS 11系列 - Xcode 9新特性

    Xcode 9最近刚刚发布,带来了一系列不错的新特性,可以更好的帮助到开发者完成开发工作. Xcode Runtime Tool Xcode 9中有许多Runtime Tool可以帮助开发者找到代码错 ...

  5. http系列--HTTP2.0新特性:二进制传输,多路复用,Haeder压缩,服务端push,QUIC协议

    一.前言 HTTP 2.0 相比于 HTTP 1.X,可以说是大幅度提高了 web 的性能. 在 HTTP 1.X 中,为了性能考虑,我们会引入雪碧图.将小图内联.使用多个域名等等的方式.这一切都是因 ...

  6. Redis系列 | Redis5.0 新特性

  7. [译].Net 4.5 的五项强大新特性

    本文原文:Five Great .NET Framework 4.5 Features 译者:冰河魔法师 目录 介绍 特性一:async和await 特性二:Zip压缩 特性三:正则表达式执行超时 特 ...

  8. Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结

    Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.----------- ...

  9. web新特性 之 WebSocket

    详情参见:你真的了解WebSocket吗?     WebSocket系列教程   HTML5新特性之WebSocket WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HT ...

  10. c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】

    引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. ---------- ...

随机推荐

  1. 2023年这个星球共同话题chatgpt,火爆全球的chatgpt到底是啥?会抢谁的饭碗?如何避免沦为ChatGPT时代的废物

    2023年初到现在这个星球人人谈chatgpt,火爆全球的#chatgpt 到底是啥?会抢谁的饭碗?如何避免沦为ChatGPT时代的废物 ChatGPT的横空出世迅速点燃了外界的关注.推出仅两个月后, ...

  2. 长达 1.7 万字的 explain 关键字指南!

    当你的数据里只有几千几万,那么 SQL 优化并不会发挥太大价值,但当你的数据里去到了几百上千万,SQL 优化的价值就体现出来了!因此稍微有些经验的同学都知道,怎么让 MySQL 查询语句又快又好是一件 ...

  3. 月光宝盒(vivo流量录制回放平台)正式对外开源

    作者:vivo 互联网服务器团队- Liu Yanjiang 月光宝盒是一个基于流量录制回放的自动化测试平台,通过录制回放取代编写脚本进行自动化回归,提升测试效率和覆盖率.因为其解决方案具有很强的通用 ...

  4. pandas之sql操作

    我们知道,使用 SQL 语句能够完成对 table 的增删改查操作,Pandas 同样也可以实现 SQL 语句的基本功能.本节主要讲解 Pandas 如何执行 SQL 操作.首先加载一个某连锁咖啡厅地 ...

  5. Yii framework 应用小窍门

    Yii framework 应用小窍门     1. Yii Framework] 如何获取当前controller的名称?  下面语句就可以获取当前控制器的名称了! Php代码   Yii::app ...

  6. PyG 图神经网络依赖环境安装(Anaconda)

    1.默认用户在Anaconda的虚拟环境中已安装Pytorch 2.打开anaconda prompt命令窗, activate "你的虚拟环境名称" 3.在激活后的虚拟环境下输入 ...

  7. 使用Python代码远程连接服务器

    目录 一.paramiko模块的介绍 二.基本使用(用户名密码登录) 三.用公钥私钥连接 一.paramiko模块的介绍 模块介绍 使用Python的第三方模块paramiko实现远程连接服务器 功能 ...

  8. 使用 Transformers 进行图分类

    在之前的 博文 中,我们探讨了图机器学习的一些理论知识.这一篇我们将探索如何使用 Transformers 库进行图分类.(你也可以从 此处 下载演示 notebook,跟着一起做!) 目前,Tran ...

  9. Mysql中如果建立了索引,索引所占的空间随着数据量增长而变大,这样无论写入还是查询,性能都会有所下降,怎么处理?

    索引所占空间的增长确实会对MySQL数据库的写入性能和查询性能造成影响,这主要是由于索引数据过多时会导致磁盘I/O操作变得非常频繁,从而使性能下降.为此,可以采取以下几种方式来减缓这种影响: 1. 限 ...

  10. P1980 [NOIP2013 普及组] 计数问题

    题目链接:https://www.luogu.com.cn/problem/P1980 术语 以下的英文术语均可以翻译为数字. digit: 一个数字字符,十进制就是 0-9 之间的一个字符: num ...