WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

京东云开发者
• 阅读 611

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

一、版本说明

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

二、新增特性

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

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

首先创建一个新的文件

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

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

  • 资产引用的编译检查

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

编辑资产的名称时,可以获得XCode 的智能推荐。 WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

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

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

4.文档 (Documentation)

  • 新的文档卡片样式

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • 文档小助手

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

5.新增 Swift 宏 (Swift macros)

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

  • 创建宏包 (macro package)

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

然后选择 Swift Macro

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • 展开宏和断点调试

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

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

6.运行时预览 (Previews)

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

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

以下继续添加了一个带名称的预览实例,当有多个预览实例时,可以在右侧边栏的左上角切换tab 预览对应实例。 WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • AppKit 及UIKit 的预览支持

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • Widget 预览支持

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

7.书签功能 (Bookmark)

  • 添加书签

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • 书签分组

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • 设置为代办或完成

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

  • 版本控制面板

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

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

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

9.测试 (Testing)

  • 测试面板

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • 查看测试结果

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

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

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • 可交互的测试用例回放

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

10.调试 (Debugging)

  • 控制台引入 OSLog 的支持

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

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

11.分发 (Distributing)

  • 新增 TestFlight 包的备注信息

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • 查看框架签名

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • 隐私清单

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

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

  • TestFlight 仅分发到内部测试

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

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

WWDC2023 Session系列:探索XCode15新特性 | 京东云技术团队

三、总结

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

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

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

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

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

作者:京东零售 王晰源

来源:京东云开发者社区

点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
Js可以写桌面应用端?
1、下载nw.jshttps://nwjs.io/最好下载sdk版本。2、解压打开安装包下载完之后,解压打开图中的「app文件夹」是我自己创建的,你也需要自己创建一个,里面放你项目文件。「app文件夹」中一般放一个index.html(页面展示),另外还需要创建一个package.json文件(参数配置):        "name":  "first 
Jacquelyn38 Jacquelyn38
3年前
牛逼!五分钟开发一款桌面版应用
1、下载nw.jshttps://nwjs.io/最好下载sdk版本。2、解压打开安装包下载完之后,解压打开图中的app文件夹是我自己创建的,你也需要自己创建一个,里面放你项目文件。app文件夹中一般放一个index.html(页面展示),另外还需要创建一个package.json文件(参数配置):        "name":  "first  ap
Peter20 Peter20
3年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Linux应急响应(四):盖茨木马
0x00前言Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马,主要恶意特点是具备了后门程序,DDoS攻击的能力,并且会替换常用的系统文件进行伪装。木马得名于其在变量函数的命名中,大量使用Gates这个单词。分析和清除盖茨木马的过程,可以发现有很多值得去学习和借鉴的地方。0x01应急场景
Stella981 Stella981
3年前
Hibernate纯sql查询结果和该sql在数据库直接查询结果不一致
问题:今天在做一个查询的时候发现一个问题,我先在数据库实现了我需要的sql,然后我在代码中代码:selectdistinctd.id,d.name,COALESCE(c.count_num,0),COALESCE(c.count_fix,0),COALESCE(c
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_