WWDC2023 Session系列:探索XCode15新特性
一、版本说明
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新特性的更多相关文章
- 前端进阶系列(三):HTML5新特性
HTML5 是对 HTML 标准的第五次修订.其主要的目标是将互联网语义化,以便更好地被人类和机器阅读,并同时提供更好地支持各种媒体的嵌入.HTML5 的语法是向后兼容的.现在国内普遍说的 H5 是包 ...
- Java系列 - 用Java8新特性进行Java开发太爽了
本人博客文章网址:https://www.peretang.com/using-java8s-new-features-to-coding-is-awesome/ 前言 从开始写博客到现在已经过去3个 ...
- Java系列 – 用Java8新特性进行Java开发太爽了(续)
本人博客文章网址:https://www.peretang.com/using-java8s-new-features-to-coding-is-awesome-2/ 前言 上周, 我们谈论了关于Ja ...
- iOS 11系列 - Xcode 9新特性
Xcode 9最近刚刚发布,带来了一系列不错的新特性,可以更好的帮助到开发者完成开发工作. Xcode Runtime Tool Xcode 9中有许多Runtime Tool可以帮助开发者找到代码错 ...
- http系列--HTTP2.0新特性:二进制传输,多路复用,Haeder压缩,服务端push,QUIC协议
一.前言 HTTP 2.0 相比于 HTTP 1.X,可以说是大幅度提高了 web 的性能. 在 HTTP 1.X 中,为了性能考虑,我们会引入雪碧图.将小图内联.使用多个域名等等的方式.这一切都是因 ...
- Redis系列 | Redis5.0 新特性
- [译].Net 4.5 的五项强大新特性
本文原文:Five Great .NET Framework 4.5 Features 译者:冰河魔法师 目录 介绍 特性一:async和await 特性二:Zip压缩 特性三:正则表达式执行超时 特 ...
- 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.----------- ...
- web新特性 之 WebSocket
详情参见:你真的了解WebSocket吗? WebSocket系列教程 HTML5新特性之WebSocket WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HT ...
- 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. ---------- ...
随机推荐
- vulnhub靶场之HACKSUDO: 2 (HACKDUDO)
准备: 攻击机:虚拟机kali.本机win10. 靶机:hacksudo: 2 (HackDudo),下载地址:https://download.vulnhub.com/hacksudo/hackdu ...
- redhat6安装10g rac过程中的报错
问题描述:redhat 6 来安装oracle10.2.0.1的集群,坑太多了,不建议这样安装,即使安装成功,在升级过程中也会有各种报错.redhat5安装还比较顺利,6就一路坑 1.缺少依赖 lib ...
- 执行计划display_cursor函数
问题描述:关于oracle查看真实的执行计划,使用select * from table(dbms_xplan.display_cursor(null,null));的方式来获取执行计划 参考文档:h ...
- Redis 日志showlog 和 管道pileline
redis日志 slowlog-log-slower-than:指定执行时间超过多少微秒(1秒等于1000000微秒) 的命令请求会被记录到日志上 slowlog-max-len:指定服务器最多保存多 ...
- [ Docker ] 部署 nps 和 npc 实现内网穿透
https://www.cnblogs.com/yeungchie/ 云主机上运行 nps 创建映射目录 mkdir -p ~/docker/nps/config 拉取镜像 docker pull o ...
- MAPPO学习笔记(2) —— 从MAPPO论文入手
在有了上一节一些有关PPO算法的概念作为基础后,我们就可以正式开始对于MAPPO这一算法的学习. 那么,既然要学习一个算法,就不得不去阅读提出这一算法的论文.那么本篇博客将从MAPPO的论文出发,对M ...
- Linux下ftp常见问题总结
Linux下ftp常见问题总结 似乎拖欠了几篇文章了@_@,来公司半年了,成长了不少!从大学毕业,直到看到http://blog.csdn.net/leixiaohua1020 雷霄骅(然而天妒英才 ...
- 深度学习03-(图像梯度处理、图像轮廓、图像预处理在AI中的应用)
深度学习03-计算机视觉基本理论2 深度学习03-(计算机视觉基本理论2) 图像梯度处理 什么是图像梯度 模板运算 均值滤波 高斯滤波 中值滤波 边沿检测 锐化 图像轮廓 什么是图像轮廓 查找和绘制轮 ...
- windows11 下使用 阿里云 modelscope docker 环境 运行参考
昨天看视频 我们做了个能对话的AI派蒙,免费给大家玩! 发现阿里有一个语音转文字的模型(paraformer),之前处理这种需求一直都是直接调用服务商提交好的API接口 突然想尝试一下本地搭建,虽然和 ...
- dos命令、变量、字符编码、注释、用户输入
一.dos命令 1.dos命令 c: 切换盘符 cd c:\pthon 切换路径 dir 查看目录下的文件 cd .. 返回到上一层目录 cd ../.. 返回到上一层的上一层目录 二.环境变量的配置 ...