Xcode 13 新功能

1、内置图标和项目文件图标有变化 ,可以轻松地按形状和颜色识别不同类型的文件 。
  • 内置图标

  • 项目文件图标


  • 新建的 SwiftUI 项目工程中不再有 Info.plist 文件

  • 新建的 iOS 项目工程中的 Info.plist 文件中也只有少量的内容,集成在项目 : TARGET --- Info --- Custom iOS Target Properties

  • 支持隐藏文件的后缀名 : Preferences --- General --- FileExtension

  • 支持 Vim : Preferences --- Text Editing --- Editing --- Enable Vim key bindings

  • 断点可以更加细化到某列,不再局限于某一行,具体操作:选中操作 —> Show Code Actions —> Set Column Breakpoint 。

  • Storyboard 的左下角菜单支持 Accessibility 、暗黑模式切换、横竖屏切换和预览 。


  • Storyboard 菜单

Storyboard 中 UIButton 支持 iOS 15 引入的更多配置


  • 工具栏中停止按钮只有运行以后才会出现,并且编译运行时的长形进度条改为圆形进度条。

  • 自动补全更强大。
    (1)如输入 view.cor,会自动提示 layer.cornerRadius。
    (2)可选型解包时自动提示。
    (3)switch 分支如果传入的是枚举,会自动将所有 case 列出。
    (4)遍历数组时,会自动使用数组名的单数形式,如数组名为 names ,遍历时为 name 。

  • 根据书写的内容可以自动导入相应的模块,可以不用手动导入(目前 Beta1 还有一些问题,会有导入不了的情况出现)。



界面
  • Xcode 13 重新设计了 Project Navigator,各种不同的文件类型使用了符号化的图标。默认情况下,文件扩展名是隐藏的。总体来说,视觉观感变得更干净了。
Xcode Cloud

Xcode Cloud 是对于团队协作是一项重要的补充特性,它允许持续集成和交付,跨越多种设备类型进行并行测试,还能自动推送 App 到 TestFlight,使得测试人员获取最新版本的项目构建更加便捷。

源码编辑器

源码编辑器是我们在开发过程中花费最多时间的地方,Xcode 13 在源代码编辑器方面改进了不少细节,尤其是自动补全功能。

自动导入

如果你在编写代码时使用了当前不可用的类型,Xcode 会自动帮你导入相关的框架。比如,如果你编写下面这样的代码:

struct ExampleView: View

Xcode 会检测到 View 属于 SwiftUI 框架,然后在代码补全时自动添加 import SwiftUI 到源文件头。

解包语句自动补全

如果你尝试解包一个可选型,Xcode 现在会为你自动补全。尝试下面这样的代码:

struct UserGreeting {
   func greet(name: String?) {
       if let na
   }
}

当你在键入 if let na 时,Xcode 会提供 if let name = name 作为自动补全的选项。


更深路径的自动补全

Xcode 现在还能针对属性之下的属性提供深路径的自动补全。尝试下面这样的代码:

class ExampleVC: UIViewController {
   override func viewDidLoad() {
       let someText = UILabel()
       view.corn
       view.addSubview(someText)
   }
}

当你在键入 view.corn 时,Xcode 会提供 view.layer.cornerRadius 作为补全选项 —— 它实际上检查了 layer 下的属性并且把它们提升到上层作为补全选项。


Switch case 自动补全

当你在使用 switch 语句时,Xcode 现在会用所有的枚举 case 自动补全。尝试下面这样的代码:

struct PaintMixer {
   enum Color {
       case red, green, blue, tartan
   }

   func handle(color: Color) {
       switch col
   }
}

当你在键入 switch col 时,Xcode 会自动补全 col 为 color,并且填充该枚举类型所有可能的 case。


数组遍历语句自动补全

当你遍历一个数组时,Xcode 现在能够用数组名称的单数形式自动为你补全 for 语句。尝试下面这样的代码:

struct NamePrinter {
   let names = ["Becca", "Holly", "Ted"]

   func printNames() {
       for nam
   }
}

当你在键入 for nam,Xcode 会自动补全剩余的部分,输出 for name in names —— 它能够知道 names 是复数,并且创建单数版本并且用作遍历的变量名。

如果要我猜测的话,我估计这个特性是基于某种机器学习的策略,因为 Xcode 可以理解各种形式的复数 —— 包括不规则的复数。尝试下面这样的代码:

let indices = [1, 2, 3]
let people = ["Eric", "Maeve", "Otis"]
let millennia = [1000, 2000, 3000]
let geese = ["Golden", "Mother", "Untitled"]

列断点

Xcode 13 可以让你放置 “列断点” —— 这是一种可以在一行代码的中间位置精确插入的断点,而不仅仅是以往只能针对整行代码的断点。

比如,我们可能像下面这样调用多个函数来产生某个单一值:

func first() -> String { "A" }
func second() -> String { "B" }
func third() -> String { "C" }

func buildString() -> String {
   first() + second() + third()
}

如果我们在 buildString() 这一行放置一个断点,我们需要分别 Step Into 每个函数来查看代码。但是假如我们已经大致知道问题所在,则可以直接放置一个“列断点” —— 比如让 Xcode 精确地停在 second() 的调用点。

你可以尝试上面的代码,选中 second() 然后按 Shift+Cmd+A 调起代码动作 —— 或者右键菜单选择 Show Code Actions,你会看到 Set Column Breakpoint。

列断点的工作方式和常规的行断点是一样的。所以你可以点击并拖拽它们,或者右键编辑它们以添加自定义设置。


Vim 模式

最后一项对于 Xcode 源码编辑器的改进值得特别关注,因为这对于某些程序员来说可能是会令他们爱不释手的一项功能。

这个特性就是 Vim 快捷键绑定,你可以在 Xcode 的偏好设置下启用它 —— 前往 Text Editing,勾选 Enable Vim Key Bindings。

如果你以前没有使用 Vim,我简单介绍一下。Vim 是一个命令行文本编辑器,早在 1976 年就以 Vi 的前身风靡,并于 1991 年升级为“Vi Improved”(简称 Vim)。Vim 的工作方式非常特殊,它需要你仔细了解键盘(某种意义上,可以说 Vim 是高度依赖键盘操作的,这也正是 Vim 能够成就高效代码编写的关键)。现在,你终于可以在 Xcode 13 中应用你在 Vim 里使用的大部分操作。

我之所以说“大部分”,是因为 Xcode 13 目前只支持 Vim 快捷键绑定的一个子集:这其中包括导航、插入、猛拉、搜索等,但相对行号、重复操作、保存 :w 这些操作还是不支持的。不过,这是一个很好的开端,我相信后续还有更多实用的操作会被实现。


版本控制改进

Xcode 已经集成版本控制相当长时间了,但今年这个功能获得了有史以来最大的升级 —— 比较任意两个版本之间的变化变得更加容易,你还可以在 Xcode 中打开 pull requests,邀请代码审查者,甚至在 IDE 内直接处理 code review。

提示:你需要打开 Xcode 的源代码控制功能才能正常工作。如果你之前禁用了这个功能,可以到 Preferences > Source Control 下勾选 Enable Source Contro 来重新启用。

用 DocC 创建自定义文档
Xcode 13 现在已经具备从代码中直接创建文档集的功能。它能够读取你添加的 Markdown 注释,将它们构建到 Xcode 的帮助系统,其所采用的布局和格式同苹果自家的框架是一样的。



Xcode 13

Xcode 13 新增了强大的团队开发功能,非常适合与 Xcode Cloud 以及 GitHub、Bitbucket 和 GitLab 协作功能搭配使用。直接在 Xcode 中发起、审核、评注和合并拉取请求。直接在代码内查看团队成员的注释。快速比较代码文件的任何两个版本。

内嵌团队注释

团队成员在审核期间为代码添加的注释与审核者的姓名和头像一起内嵌显示在代码编辑器中。

即时崩溃报告和反馈

只需几分钟时间,来自 TestFlight 用户的崩溃报告就会出现在 Xcode Organizer 中,同时还有用户反馈,因此您的测试员可以向您描述他们在遭遇崩溃时发生的确切情况。崩溃日志会内嵌显示,您只需点按一下,就能跳转到相关的代码。

自定文档

直接通过源代码的文档注释为您的 Swift 框架和软件包构建文档,然后在 Xcode 快速帮助和专用文档查看器中查看。通过添加扩展文件、文章和教程 (全部以 Markdown 语言编写),扩充这些注释,并选择将编译的 DocC 归档分享给其他开发者或托管在您的网站上。


参考来源:文档一文档二文档三

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容

  • 内置图标和项目文件图标有变化,可以轻松地按形状和颜色识别不同类型的文件。 新建的 SwiftUI 项目工程中不再有...
    iOS_zy阅读 2,160评论 0 4
  • Xcode 12 Beta 3发行说明 更新您的应用程序以使用新功能,并针对API更改测试您的应用程序。 总览 X...
    iCloudEnd阅读 2,387评论 0 0
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,494评论 1 180
  • 1. 升级到Xcode9.0之后,可以通过Wifi连接iOS或tvOS设备进行无线调试。 要求: Xcode ...
    雨影阅读 857评论 5 1
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,471评论 28 53