Xcode 12 Beta 3 更新记录SwiftUI2

Xcode 12 Beta 3发行说明

更新您的应用程序以使用新功能,并针对API更改测试您的应用程序。

总览

Xcode 12 beta 3包括适用于iOS 14,iPad OS 14,tvOS 14,watchOS 7和macOS 11的SDK。Xcode 12 beta 3版本支持针对iOS 9和更高版本,tvOS 9和更高版本以及watchOS 2和更高版本的设备上调试。 。Xcode 12 beta 3需要运行macOS Big Sur 11 beta或更高版本的Apple芯片,或运行macOS Catalina 10.15.4或更高版本的基于Intel的Mac。

一般

在Xcode 12 beta 3中解决

  • 修复了阻止编译使用SpriteKit的SwiftUI代码的问题。(63350569)

  • SwiftUI API的可编译代码完成现在可以正确处理重载的方法。(64037686)

  • 修复了将Apple ID帐户添加到Xcode的“帐户”首选项窗格时有时会发生的崩溃。(64806671)(FB7798083)

  • Xcode 12 beta 3支持iOS,tvOS和watchOS设备以及Apple芯片上的模拟设备开发。(64317985,65077539,65701094)

弃用

  • Quartz Composer已过时,将无法启动。

    如果您需要将资产移出现有合成,请使用Apple Developer网站上用于Xcode 11.4的附加工具包中的Quartz Composer应用程序。(64181908)

Apple Clang编译器

弃用

  • i386,x86_64和arm的独立系统组装程序已弃用,并且可能在以后的Xcode版本中删除。将as命令与-Q标志一起使用会显示警告,指示您过渡到Clang的集成汇编器和-q标志。该as(1)驱动程序将继续,因为调用锵的综合汇编,以及由开发商安装的任何汇编的标准方法。(61299833)

资产目录

已知的问题

  • 当为使用Mac Catalyst构建的应用程序选择“为Mac优化界面”并且没有Mac资产时,即使您提供了Mac Scaled或iPad资产,Xcode也会错误地使用Universal资产。(63368950)

建立系统

Xcode 12 beta 3中的新功能

  • XCFrameworks现在可以在带有标志的库包中包含和调试符号文件。运行命令以获取其他用法信息。

在Xcode 12 beta 3中解决

  • 修复了Xcode在处理XCFramework时无法正确复制标头的问题。(64754387)(FB7786076)

弃用

  • “构建设置”编辑器不再包含“有效体系结构”构建设置(),不建议使用。而是有一个新的“排除的体系结构”构建设置()。(15145028)VALID<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">_ARCHS``EXCLUDED<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">_ARCHS

  • 旧版构建系统已弃用,并将在以后的版本中删除。(62742902)

核心ML

弃用

  • 不推荐使用Xcode中自动生成的模型接口上的默认初始化程序,而推荐使用init(configuration:)。请改用init(configuration:)或新引入的.load()方法,并适当处理模型加载错误。(62875309)

调试

在Xcode 12 beta 3中解决

  • 修复了在“调试导航器”中选择内存浏览器时可能发生的崩溃。(54767689)

  • 使用进行调试时lldbpo self现在可以在模拟的tvOS设备上以Swift代码显示指针的地址。(58477904,65150335)

  • lldb从命令行使用调试Rosetta进程的启动速度更快。(63793175)

  • 修复了在macOS上调试游戏项目时选择FPS调试仪表时可能发生的崩溃。(64213691)

  • 修复了捕获视图层次结构后可能发生的崩溃。(64334442)

  • 调试在macOS 11上运行的iOS WidgetKit扩展失败,并显示错误。(65698467)

已知的问题

  • 从Xcode构建和运行时,Mac上的iPad和iPhone应用程序可能无法访问按需资源。(62074124)

  • 内存图调试器可能会错误地对当前Xcode工作区中SwiftUI应用程序中定义的类型的来源进行分类。当您选择“仅显示工作区中的内容”时,“调试”导航器可能会在错误的部分列出这些类型,并错误地将它们过滤掉。(63899779)

    解决方法:取消选择“仅显示工作空间中的内容”以发现所有类型的对象。

  • 打开调试仪表时,Xcode可能会崩溃。(64181692)

文档查看器

在Xcode 12 beta 3中解决

  • SwiftUI,DeveloperToolsSupport,WidgetKit,SwiftSystem和Combine现在在Xcode的文档查看器中包含beta指示符。(64380885)

  • SwiftUI,DeveloperToolsSupport,WidgetKit,SwiftSystem和Combine现在在Xcode的文档查看器中具有正确的Mac Catalyst可用性。(64386417,64526330)

仪器

已知的问题

  • 插入macOS应用程序时,“动画挂钩”模板不会显示挂钩间隔。(61082729)

  • 与运行早期OS版本的模拟设备相比,iOS 14,iPadOS 14,tvOS 14和watchOS 7模拟设备降低了性能,并增加了内存消耗。(65037128)

弃用

  • instruments现在不建议使用该命令,而建议使用它替换:xctracexctrace记录,导入和导出Instruments .trace文件中的数据。(36641078)

界面生成器

Xcode 12 beta 3中的新功能

  • Interface Builder现在支持iOS 14中引入的两栏和三栏样式。(57025285)

  • 现在,您可以在编辑器菜单中使用Minimap命令显示和隐藏Minimap。(63831585)

在Xcode 12 beta 3中解决

  • 修复了有时会取消检查员的iOS文本样式的问题。(51854358)(FB6169763)

  • 解决了情节提要或画布中隐藏视图的性能问题。(63008369,64314634)NSTab<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">View.xib

  • 修复了大图像以及Apple硅上的SCNView情节提要和.xib画布时的渲染问题。(64093939)

  • 修复了在演示板的Mac Catalyst视图中的显示或推送序列中某些目标视图控制器的内容呈现问题。(64320758)

弃用

Playgroud

已知的问题

  • Xcode可能会显示文本“ No Editor”,而不是在创建Playground后立即打开其源代码编辑器。(56484197)

    解决方法:使用“视图”>“导航器”>“项目”显示“项目导航器”,然后手动选择“游乐场”。

Preview

在Xcode 12 beta 3中解决

  • 现在支持针对watchOS复杂性的设备上SwiftUI预览。(64097600)

  • 解决了Mac Catalyst的SwiftUI预览中可能发生的超时。(64098969)

  • 修复了一个错误,该错误可能导致传递nil给修饰符的窗口小部件的空白预览。(64315456)widget<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">URL(_:)

  • Xcode现在在Apple芯片上运行时支持iOS的SwiftUI预览。(65101322)

已知的问题

  • Xcode不提供macOS小部件扩展的预览。(57990060)

  • 当包含多个预览时,macOS的Live SwiftUI预览将无法交互。(62156572)Preview<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Provider

  • 您无法在“预览”画布的“窗口小部件”中选择视图。(62517078)

  • 动画可能无法在实时SwiftUI预览中使用。(63333795)

  • 当文件是同时由应用程序和小部件链接的框架的一部分时,SwiftUI预览可能会失败。(63785700)

  • 进行更改之前,可能无法显示macOS的Live SwiftUI预览,除非您单击画布上的Bring Forward按钮。(63865018)

  • 在macOS 11上运行时,Mac Catalyst的实时预览可能会失败。(63998976)

  • 向前移动或显示时,Mac Catalyst出口的实时SwiftUI预览。(64151326)

  • 预览iPad设备的窗口小部件扩展程序可能会在顶部显示多余的空白栏。(64277772)

  • 应用外观修改器时,窗口小部件扩展预览不适合深色外观。(64277915).preferred<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Color<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Scheme(.dark)

项目浏览器

在Xcode 12 beta 3中解决

  • 修复了项目导航器中某些项目的“在Finder中显示”上下文菜单项被禁用的问题。(63934092)

  • 修复了在项目导航器中重命名根项目节点时可能发生的崩溃。(63998499)

  • 在导航侧边栏中选择项目不再显示黑色高光,而不是macOS配色。(64139237)

  • 修复了验证菜单项时可能发生的崩溃。(64409911

  • 修复了在“项目浏览器”中双击一个组不会展开或折叠该组的问题。(64622953)(FB7749742)

  • 修复了使用键盘快捷键显示导航器未使导航器轮廓集中的问题。(64627462)(FB7751100)

  • 修复了“导航器”菜单中的“过滤器”功能不起作用的问题。(64647545)(FB7758103)

  • 修复了在“项目浏览器”中执行“显示”命令时可能发生的崩溃。(65235467)

  • 修复了Xcode不允许您将情节提要板拖到其父组中的新位置的问题。(65241585)

已知的问题

  • 即使macOS不支持App Clip,App Clip方案也提供“ My Mac(为iPad设计)”或“ My Mac(为iPhone设计)”运行目的地。(65702469)

Reality Composer

已知的问题

  • 将CSV文件添加到图表资产时,Reality Composer可能会崩溃。(63782093)

  • App Store中的Reality Composer与iOS 14 beta或iPadOS 14 beta不兼容。(64509815)

    解决方法:使用可通过Apple Developer网站获得的Reality Composer beta 。

弃用

  • 由Xcode 12创建的Reality文件只能在macOS 10.15.4或更高版本,iOS和iPadOS 13.4或更高版本以及Reality Composer 1.4或更高版本中加载。(58825031)

Sanitizer

在Xcode 12 beta 3中解决

  • 在模拟watchOS设备上进行调试时,Xcode现在支持Thread Sanitizer。(64421085)

签署和分发

在Xcode 12 beta 3中解决

  • 现在,自动签名可以为App Clip目标启用“使用Apple登录”功能。(64452719)

  • App Clip现在可以使用[NetworkExtension]

已知的问题

  • 已签名为在macOS上本地运行的Mac Catalyst应用程序可能无法在Mac(Rosetta)运行目标上运行。(64421496)

  • 应用剪辑无法再访问电子钱包通行证。如果您已经将电子钱包功能添加到App Clip目标,则可能无法构建或将应用提交到App Store Connect。在目标编辑器的“签名和功能”窗格中删除电子钱包功能,并禁用或删除任何使用此已删除功能的代码。(65244156)

仿真器

在Xcode 12 beta 3中解决

  • 在重负载下在模拟设备中缩短了应用启动时间。(63348920)

  • 当使用Xcode在全屏模式下打开Simulator并启动另一个模拟设备时,新的设备窗口将不再尝试全屏启动。(64005856)

  • 修复了一个错误,该错误在模拟器已经运行时在模拟器中启动应用有时会失败,并显示错误“等待Simulator.app准备就绪而超时”。(64508635)

  • 如果在启用左上角的热角的情况下启动指针捕获模式,模拟器将不再触发热角动作。(64805156)(FB7797684)

已知的问题

  • 当在具有content-available键集的Simulator中模拟推送通知时,系统将调用而不是。(60426170,60974170)(FB7625283)

  • simctl状态栏覆盖无法在运行iOS或iPadOS 13.6或更早版本的模拟设备上正常运行。(63958080)

弃用

  • 在macOS 11中运行时,Simulator支持iOS 11.4或更高版本。(59938106)

源代码控制

已知的问题

  • 如果您在设置Git的作者信息之前创建了Git存储库,则Xcode将无法重命名文件,并且存储库中的每个文件都将被取消跟踪。(64260085)

    解决方法git 在创建新项目之前,通过Xcode Preferences或命令行设置Git作者信息 。或者,在设置Git作者信息之后创建一个初始提交。

源代码编辑器

已知的问题

  • 新的Xcode Source Editor扩展目标不会自动在扩展中设置嵌入。(59274389)

  • Xcode扩展名可能会导致Xcode在启动或启用扩展名时挂起。(61952790)

    解决方法:在“系统偏好设置”的“扩展”窗格中禁用Xcode扩展。

弃用

  • 为了与macOS 11中的新安全功能兼容,必须使用Xcode 12构建Xcode扩展,并且必须将embed嵌入。使用这些工具重建的Xcode扩展与旧版本的Xcode和macOS兼容。(51822755)Xcode<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Kit<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">.framework

迅速

在Xcode 12 beta 3中解决

  • 减少了编译器的内存使用。(59908962)

  • Xcode 12 beta 3包括支持@main在基于UIKit或AppKit的应用中使用或代替它们。(60502727,60502804,63291088)

  • Swift会根据协议要求为Swift函数构建器推断属性。(63629316)

  • 将成员添加到用于定义它的文件和另一个文件中使用的类型中,不再导致增量编译中的错误编译。(64074744)

迅捷包

已知的问题

  • 打开包含程序包引用的工作区时,可能会出现带有消息“数据库已锁定”的程序包解析错误。(61113361)

    解决方法:关闭并重新打开工作区。

  • Swift软件包可能不遵守“仅构建活动体系结构”项目的构建设置。(64344067)

    解决方法:使用“任何Mac”,“任何iOS设备(arm64)”,“任何watchOS设备”或“任何tvOS设备”目标位置来构建所有适用的设备。

测试中

在Xcode 12 beta 3中解决

  • UI目标查询现在可以更好地定位iOS共享表中的单元格。(49961747)

  • 用于Swift代码的iOS应用程序单元测试在Apple芯片上可以更可靠地执行。(65308436)

已知的问题

  • XCTAssert并且Objective-C和Objective-C ++中的相关断言宏不再包含self用于访问当前测试用例的引用。现在,当使用-Wunused-variable或构建代码时,编译器可能会发出新的警告-Wunused-lambda-capture,其中声明了的显式变量或lambda捕获self。(60017011)

    解决方法:删除self变量或lambda捕获,因为不再需要它XCTAssert

  • Xcode无法在Apple芯片上的iOS或iPadOS应用程序上运行UI测试。如果活动方案/测试计划同时包含单元测试和UI测试,则Xcode会跳过UI测试,并在测试活动日志中记录一条消息,指出已跳过UI测试。(60059698)

  • Xcode不支持在Apple芯片上针对iOS或iPadOS应用程序并行运行测试。而是依次运行测试。(60514529)

  • 使用动画时动画性能度量(挂钩的总数,扯起总持续时间,挂钩时间比,帧速率,以及帧计数)再加上用于仿真设备不可用。(63766090)

    解决方法XCTSkip用于跳过模拟设备上的性能测试。

  • testmanagerd在某些iOS设备上运行UI测试时,截图捕获可能会导致“失去连接”测试失败。(63946264)

    解决方法:在方案或测试计划中禁用自动屏幕截图。

  • 启用代码覆盖率后,使用Apple芯片为Mac构建Mac Catalyst应用程序失败。(65003639)

  • 如果测试目标的“主机应用程序”设置设置为“无”,则iOS单元测试无法在Apple芯片上启动。(65309328)

    解决方法:将主机应用程序设置为iOS应用程序目标。

弃用

  • Xcode现在支持在运行iOS 9.0及更高版本的iOS设备上调试应用程序并运行测试。(59561001)

Xcode 12 beta 2中的更新

一般

Xcode 12 beta 2中的新功能

  • 代码补全具有新的,重点突出的用户界面,使查找补全更加容易。在Xcode 12中,完成也更准确,速度最高可提高15倍。(56087948,58010475)

在Xcode 12 beta 2中解决

  • 在未安装命令行工具的情况下运行开发人员命令行工具或xcode-select --install直接调用命令行工具将触发命令行工具的安装。(63881429)

核心ML

在Xcode 12 beta 2中解决

  • 启用加密模型后,Xcode现在可以正确加密用于Core ML模型部署的模型档案。(64331416)

设备

在Xcode 12 beta 2中解决

  • 运行iOS或iPadOS 13.6 Beta版的设备可以用于Xcode 12 beta 2的开发。(64220694)

金属

在Xcode 12 beta 2中解决

  • 使用部署目标11.0时,金属代码会编译。(64344660)

组织者

在Xcode 12 beta 2中解决

  • 管理器窗口不再剪辑边栏中的文本。(64281631)

预告片

在Xcode 12 beta 2中解决

  • 现在可以在不完全重建活动方案的情况下更新包含预览的软件包。(51030302)

项目浏览器

在Xcode 12 beta 2中解决

  • 现在,使用VoiceOver在“项目”导航器中选择文件,即可在编辑器中打开所选文件。(64461629)

  • 从项目导航器中删除核心数据模型不再导致Xcode崩溃。(64606064)

Xcode 12 Beta中的更新

一般

Xcode 12 Beta中的新功能

  • 现在可以在它们自己的选项卡中打开文档,从而可以轻松地在文件之间快速切换,同时保持Xcode的其余配置。按住Option键单击或双击以在选项卡中打开文档。当您打开多个文档时,或选择“视图”>“始终显示标签栏”时,将显示标签栏。(7954451)

  • Xcode现在支持预览小部件,应用程序剪辑和Swift软件包中的内容。为了在设备上进行更无缝的实时预览,Xcode安装了适用于iOS 14和iPadOS 14的新Xcode Previews应用。(56388008)

  • 新协议使您能够在Xcode的库中显示视图和修饰符。(56423420)Library<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Content<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Provider

  • 将iPad应用程序引入macOS时,您现在可以使用“针对Mac的优化界面”目标设置来使用本机macOS控件和Mac分辨率。(56344940)

  • Xcode的运行目标菜单现在显示Mac方案的Any Mac目标。这是一个新的构建目标,可以为方案中的所有目标为其所支持的体系结构构建每个目标,而与本地Mac的本机体系结构无关。(62736613)

Apple Clang编译器

Xcode 12 Beta中的新功能

  • Clang现在警告在宏中指定的格式字符串不正确。(23622446)

  • 现在,该特性对Block类型成立。这允许在新的地方使用块,例如。(57892832)

在Xcode 12 beta中解决

  • @dynamic如果在继承自另一个协议的协议中重新声明了该属性,则将忽略该属性上的。(45503561)

  • 现在,当为macOS构建C或Objective-C代码时,如果使用不带显式声明的函数,则Clang报告错误(-Werror=implicit-function-declaration标志为on)。这种额外的错误检测功能使Clang在iOS / tvOS和macOS 64位目标上的行为得以统一。(49917738)

  • 使用id协议对块参数进行固定类型检查。现在,编译器对使用块的方法调用发出错误,该块使用的参数比将被调用的参数更具体。(57980961)

资产目录

Xcode 12 Beta中的新功能

  • 添加了对可缩放矢量图形(SVG)图像资产的支持。它们使用macOS 10.15或更高版本,iOS 13或更高版本以及iPadOS 13或更高版本的部署目标保留其矢量表示。(18389814)

  • 现在显示了复杂占位符图像所需的像素大小。(21135944)

  • 现在,默认情况下,添加新颜色将包括“深色外观”变体。如果将其保留为空,则Xcode将同时使用浅色外观和深色外观的任何外观颜色值。您可以使用资产的属性检查器隐藏未使用的变体。(55720623)

  • “ Mac Catalyst”资产变体已重命名为“ Mac Scaled”。当选择“缩放接口以匹配iPad”时(包括在macOS 10.15上),Xcode将在使用Mac Catalyst构建的目标中使用此资产。当选择“为Mac优化接口”时,Xcode将首选Mac资产变体。(58883008)

  • “新资产”菜单已更改为按平台组织资产类型。(59233882)

在Xcode 12 beta中解决

  • 解决了资产目录中的隐藏文件夹可能导致Xcode反复重新加载目录的问题。(35275782)(FB5390092)

  • 资产目录文件将在编辑时进行标准化,以提高稳定性和与以后的编辑的兼容性。键以字母顺序书写,并且在文件末尾出现换行符。(53886564)Contents<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">.json

建立系统

Xcode 12 Beta中的新功能

  • 现在,可以使用该momc工具在命令行上调用CoreData代码生成。(58713955)

在Xcode 12 beta中解决

  • 修复了以下错误:如果启用了更新的dSYM文件,则该产品不会以增量构建的形式与产品一起复制。(44696736)

  • 恢复了对新构建系统的支持。(45800765)(FB5711777)PRODUCT<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">_DEFINITION<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">_PLIST

  • 修复了一种竞争条件,即使用同一XCFramework的多个目标可能导致不确定的构建失败。(53911952)(FB6878988)

  • 与配合使用时,其中的项目现在已被正确视为递归输入。(54635196)(FB7109342)

  • 修复了可能导致资产包和产品中都包含标记的按需资源的错误。这些资源现在仅包含在资产包中。(59008757)

  • 现在,将跟踪运行脚本阶段的输入文件,作为代码签名任务的输入,从而允许对这些文件进行修改,以正确触发增量构建上的代码签名。(59353913)

  • 修复了导致在macOS应用程序和其他平台上将其设置为比构建目标的部署目标更早的值的问题。(62617478)

创建ML

Xcode 12 Beta中的新功能

  • 训练控制可帮助您在训练过程中探索模型并与之互动。可以暂停,保存,恢复和扩展训练过程。此功能需要macOS 11或更高版本。(45241965)

  • 新的样式转换模板可让您训练深度神经网络,以实时样式化照片和视频。此模板需要macOS 11或更高版本。(55848835)

  • 通过新的动作分类模板,您可以训练神经网络对视频片段中的单个人的动作进行分类。此模板需要macOS 11或更高版本。(56622350)

  • 当训练数据有限时,对象检测模板的新转移学习选项有助于提高模型的准确性。此功能需要macOS 11或更高版本。(58627183)

  • Word Tagger模板的新“转移学习”选项使用动态词嵌入来在训练数据有限时帮助提高模型准确性。此功能需要macOS 11或更高版本。(59281335)

调试

Xcode 12 Beta中的新功能

  • 当进程在断点处暂停时,Xcode将特定断点位置的命中计数显示为编辑器中断点注释的一部分。一个示例是“断点2.1(7)”,其中7表示位置2.1被命中7次。(3836838)

  • 当进程在调试器下崩溃时,Xcode在控制台中打印崩溃消息。这些消息类似于CrashReporter中显示的消息。(8931901)

  • 通过将断点动作拖放到“断点编辑器”中的其他位置来重新排序。(9777468)

  • 新的“在当前行处启用断点”和“在当前行处禁用断点”菜单项使您可以切换代码中的现有断点。此外,您可以将键盘快捷键绑定到该菜单项以快速切换断点。(17924697)

  • 现在,您可以命名一个断点,并从另一个断点的操作中按名称进行引用。例如,要启用以前禁用的名为“ MyBreakpoint”的断点,请在操作的“调试器命令”字段中键入。(25739693)

  • 在调试器中暂停时,跳出块会展开并降落在带有调试符号的帧中。

    要以反汇编着陆,请在单击“跨步”或“跨步”控件时按住控制键。(29482033)

  • 除了在编辑器中向您显示暂停的行之外,Xcode还指示该进程被暂停的列。这有助于了解何时介入,分析崩溃报告以及使自己处于具有多个闭包的代码中。(31197308)

  • 现在,您可以为LLDB初始化文件指定要在“运行和测试”操作中使用的路径。在方案的“运行”或“测试”操作的“信息”选项卡中配置此路径。该路径可以包含构建设置宏,例如${SRCROOT},因此该文件可以是项目的一部分。(38677796)(FB5425738)

  • Xcode调试器注释将突出显示源代码,并且具有更高的不透明度,以提高在多个Xcode主题中的可见性。(53463745)

  • 视图调试器将识别运行时问题,并提供优化机会,以提高UI的效率和响应能力。在调试应用程序的视图层次时,这些建议将显示在调试导航器中。(56552710)

  • 要调试窗口小部件扩展,请运行扩展的方案。通过在窗口小部件扩展方案的“参数”窗格中设置环境变量,可以配置调试会话的选项。小部件支持一个或多个系列或大小。调试时选择家庭使用中,设置环境变量,或。如果扩展用于支持多个窗口小部件,则可以通过设置环境变量以匹配窗口小部件配置的属性来选择要调试的窗口小部件。在macOS上,您可以通过将环境变量设置为“时间轴”,“快照”,“占位符”或“信息” 来指定WidgetKit Simulator中显示的默认视图(57059772,63777618)
    视图调试器现在支持保存和重新打开视图层次结构快照。使用调试栏中的“调试视图层次结构”按钮捕获视图层次结构后,可以选择“文件”>“导出视图层次结构”将其另存为.viewhierarchy文件。您可以重新打开保存.viewhierarchy在Xcode中的代码,以检查捕获的视图层次结构的状态。(57933113)

  • CALayer在视图调试器中选择a时,对象检查器现在将在屏幕外标志和组标志上显示说明性的工具提示。(58647887)

  • 如果已在“断点导航器”中禁用了断点,则可以使用上下文菜单删除所有禁用的断点。(59164503)

  • 使用为应用程序剪辑创建的方案调试应用程序剪辑。在方案中,环境变量可用于设置调试会话的App Clip体验URL。(59404002)_XCApp<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Clip<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">URL

  • 现在,视图调试器会为产生性能优化机会的运行时问题CALayer。选择“编辑器”>“显示图层”以在视图调试器中查看CALayers。选择“编辑器”>“显示优化机会”以显示或隐藏性能运行时问题。(60103476)

  • 调试>附加到进程和调试>分离现在位于菜单的中间,更靠近其余的调试菜单项。(60390611)

  • 现在可以将使用Xcode捕获的视图层次结构导出到.viewhierarchy文件中。(61065771)

  • ClockKit框架会在Xcode中生成运行时问题,以帮助您分析运行时错误。(61346475)

在Xcode 12 beta中解决

  • 解决了一个问题,即在调试栏中单击的按钮在黑暗模式下无法适当更改其外观。(46294176)

  • Xcode会更及时地将Malloc堆栈日志记录选项保留在方案编辑器的“诊断”选项卡中。(59154142)

  • Xcode现在使用启动服务启动应用程序,以更好地反映真实的应用程序运行环境。(59478437)

  • 解决了导致用户在调试过程的视图层次结构中选择“聚焦于视图”时视图调试器不显示任何内容的问题。(60255111)

设备

Xcode 12 Beta中的新功能

  • 现在,“设备和模拟器”窗口中的“添加设备”工作表可调整大小。(59611308)

  • 设备和模拟器窗口允许在导航器中选择多个设备,因此可以将它们取消配对。这简化了不再使用设备的旧记录的删除。(63290367)

文档查看器

Xcode 12 Beta中的新功能

  • “开发人员文档”窗口具有一个新的“特色页面”,其中包含Apple最新开发人员文档的概述。(59319966)

仪器

Xcode 12 Beta中的新功能

  • 现在,您可以.trace使用该xctrace命令从现有Instruments 文件中导出Analysis Core Tables 。有关xctrace更多详细信息,请参见手册页。(12491801)

  • 现在,当存在dSYM时,Instruments支持在调用树和事件回溯中更好地扩展内联函数。(16252965)

  • 仪器现在将适用的CPU注释为“高效”或“性能”。选择一个CPU将显示相关的详细信息,包括数据受限于该CPU的调用树。(38031506)

  • 仪器现在可以从.logarchive文件导入数据。Instruments使用包含和工具的新日志记录模板导入这些文件。要自定义在导入过程中使用的模板,请使用“文件”>“导入到模板...”

  • xctrace现在,该命令可以使用该--attach标志按名称附加到现有进程。(47649439)(FB5645940)

  • 现在,“文件活动”模板除了提供“磁盘读取”和“磁盘写入”的单个详细信息视图之外,还提供了逻辑读取和写入的汇总统计信息。(52148749)

  • 系统跟踪模板在新记录和导入文件上的性能明显更高。(55037273)

  • 由于优化了.trace符号存储,具有大量符号记录的文件现在减小了80-90%。(56048324)

  • Instruments包括一个新的Animation Hitches模板,用于检测滚动和动画问题,以帮助您可视化和研究应用程序的图形管道。(56553023)

  • 现在,在轨迹视图中双击事件将切换到一个详细视图,该视图在检查的时间显示基础数据,以便您进一步调查。(59173526)

在Xcode 12 beta中解决

  • 修复了以下问题:在没有乐器的情况下,双击“调用树”节点以移动到源会失败。(32751506)

  • 现在,Instruments中的线程名称反映了开发人员使用线程命名API设置的值。(51279758)

  • 显着改善了跟踪保存和加载性能。现在节省速度提高了40%。打开跟踪文件的速度提高了80%。(51597633)

  • 修复了自定义工具上忽略明细<slice>属性的问题<calltree>。(61944832)

界面生成器

Xcode 12 Beta中的新功能

  • 添加了对macOS 11中引入的新功能的支持。(16915977)

  • 为Interface Builder画布引入了一个新的小地图。您可以使用“编辑器”>“画布”>“小地图”显示和隐藏小地图。将小地图拖到画布的任何角落。您也可以在小地图中双击或命令单击以聚焦于特定场景。(19218249)(FB5891904)

  • 现在,“查找和替换”在属性字符串文字中包含匹配项。(21508424)

  • Interface Builder现在具有的Current Date选项。(56048031)

  • 现在,默认情况下,当项目彼此之间的距离为标准距离时,会创建标准间距约束。(57057604)

  • 在macOS 11中添加了对SF符号的支持(58480276)

  • 添加了对的支持。(59211094

  • 在macOS 11中添加了对的支持和新的内容类型属性。(59273897)NSText<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">ViewNSText<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Field

  • 在macOS 11中添加了对新功能的支持。(59274307)

  • subtitle在macOS 11中添加了对新属性的支持。(59274358)

  • 在macOS 11中添加了对新功能的支持。(59277905)

  • 添加了对在macOS 11中选择文本样式的支持。(59297807)

  • 通过“自动”,“全角”,“插图”和“来源列表”选项添加了对新内容的支持 。(61958249)

  • 添加了对新版式NSView边距指南的支持。(62908200)

  • 对象库包含一个带有边栏对象的新窗口控制器,该对象由窗口控制器和拆分视图控制器组成,这些控制器被配置为提供工具栏,边栏和具有安全区域布局指南的全尺寸内容视图。(63045604)

  • 现在可以编辑iOS的SF Symbols的渲染模式和符号比例属性。在图像选择器中选择SF符号后,其他属性将在图像名称下方展开。(63280118)

在Xcode 12 beta中解决

  • 修复了一个错误,在该错误中,IBDesignableInterface Builder第一次显示情节提要或时,视图未使用内部内容大小.xib。(23234553)(FB5797024)

  • IBDesignable视图无法构建时,现在画布中的视图直接存在错误。现在,单击身份检查器中IBDesignable属性上的错误图标,将提供一个显示该错误的弹出窗口,以便于调试。(56408987)

  • 故事板和.xib文件现在将使用由提供的固有内容尺寸IBDesignable覆盖时,视图上。(56419405

  • 修复了在上忽略了“拼写检查”属性的错误。(60750116)

  • 修复了启用了“保留矢量表示”的图像无法在画布中正确显示亮或暗变体的问题。(61243894)(FB7649981)

  • 视图的“布局”属性上的选项(在“大小”检查器中)已重命名,以更加清楚。现在,“自动”选项名为“推断的”,它指示视图是使用约束还是使用自动调整大小的蒙版。

    视图,其布局推断用途Translates Autoresizing Mask Into Constraints = false当视图是使用约束或处于自动布局容器,如一个或。否则,它将使用自动调整大小的遮罩和。
    对于其布局为“自动调整蒙版”的视图,将“自动调整蒙版的大小转换为约束”始终为true。(61561405)

  • 修复了在tvOS故事板上使用图像堆栈时可能发生的崩溃。(62113733)(FB7671430)

连结中

Xcode 12 Beta中的新功能

  • 链接器现在支持@filename响应文件。文件的内容代替文件名被替换到参数列表中。通常通过已支持响应文件的Clang调用链接器。要让链接器解析响应文件而不是Clang,请使用-Wl,@filename。(54356464)(FB7037642)

  • 现在,当部署目标是iOS 14或更高版本时,链接程序会将Objective-C方法列表转换为中的新的,较小的只读相对方法列表。这些二进制文件不适用于旧版本的iOS。(56880461)_<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">_TEXT

  • 现在,如果您与dylib链接但未使用任何符号,则链接器将报告警告。如果您确实打算这样做,则可以使用代替来抑制所有此类警告,或者根据需要单独标记未使用的框架。例如,在“其他链接器标志”中,添加。(60936600)

在Xcode 12 beta中解决

  • 使用该-map file选项时,.o现在可以更准确地跟踪为链接时间优化构建的文件中的功能和数据。(50031245)

  • 现在,当遇到有关未对齐指针的错误时,链接器现在将显示所有此类指针,而不仅仅是第一个。(61019996)

金属

Xcode 12 Beta中的新功能

  • Metal Debugger中新的“摘要”页面概述了捕获的命令缓冲区,性能指标和内存使用情况。Xcode分析命令,并提供描述您可能要调查的潜在问题的见解列表。在摘要屏幕上,您可以导航到有关每个主题区域的更多详细信息。(53887141)

  • 在具有A11或更高版本GPU的设备上捕获数据时,Metal System Trace会跟踪各个着色器的开始和结束时间,从而提供有关GPU如何执行代码的更详尽的见解。(54615187)

  • 在iOS设备中,除了iOS,GPU计数器现在还可用于macOS。使用GPU计数器可获取有关GPU如何运行着色器代码的更多信息,例如着色器代码是未充分利用GPU还是在GPU的特定部分出现瓶颈。(55966447)

  • 着色器验证可检测常见的着色器错误。调试应用程序时,请打开“着色器验证”,以查找非法的内存访问和其他本来很难调试的问题。(56194992)

  • Metal Debugger中的“ GPU计数器”视图具有新的用户界面,可以更轻松地过滤和分类GPU计数器数据。创建自己的计数器集,以查看诊断应用程序性能所需的确切数据。(56792744)

组织者

Xcode 12 Beta中的新功能

  • Xcode Organizer中的指标图表现在是交互式的,允许开发人员比较和对比与他们的应用程序的不同版本相关的指标。(49305896)

  • Xcode Organizer现在显示滚动提示指标。使用这些指标可以帮助您识别在滚动应用程序时遇到的可察觉的动画延迟。要查看Scroll Hitch条形图,请单击Metrics Organizer窗口中“滚动”部分。(53514128)

  • Xcode Organizer现在提供“磁盘写入”诊断报告。使用这些报告可以优化应用程序的磁盘写入性能。要查看报告,请单击管理器“报告”部分中的“磁盘写入”项。(53514182)

  • 现在,Xcode Organizer中的指标包括来自应用程序版本的数据,这些数据在字段中的使用受到限制。未达到前一年使用量阈值的应用程序版本会在版本号旁标记一个计量器图标,并显示错误幅度。随着客户使用率的增加,误差幅度会减小,直到误差幅度足够低以至于可以从UI中将其忽略。(53514245)

游乐场

Xcode 12 Beta中的新功能

  • Xcode Playgrounds现在可以导入和使用Swift包和框架。在操场的文件检查器中选中“构建活动方案”复选框,并确保活动方案可以构建包或框架目标。(60612584)

  • Xcode的Report Navigator现在包括Playground构建日志。(56351128)

  • Xcode Playgrounds现在可以构建活动方案的目标,并在文件检查器中启用“构建活动方案”时将其导入。(60089627)

在Xcode 12 beta中解决

  • 现在,VoiceOver可以访问实时视图。(40548790)

  • 解决了使用Xcode Playgrounds时导致LLDB RPC服务器崩溃的问题。(59271354)

  • 现在,如果iOS和tvOS Playgrounds中的实时视图的大小为零,则它们将使用该视图的固有内容大小。(61068790)

  • 游乐场现在支持资产目录。(61110861)

  • 如果视图没有固有大小,则macOS Playground的实时视图会退回到合理的默认大小。(62065321)(FB7670503)

  • 如果“操场”实时视图的大小为零,则现在会显示一条横幅,以指示为什么不显示实时视图。(63033441)

  • 现在,Xcode Playground会在其Resources文件夹中自动编译Core ML模型,并且Playground代码可以访问生成的ML模型界面。(63109576)

预告片

Xcode 12 Beta中的新功能

  • Xcode现在会在选择哪个应用程序呈现预览时考虑已编辑的文件并打开预览。现在,与应用程序链接的框架中包含的文件可以在应用程序内部进行预览,从而拾取应用程序提供的所有资源和权利。(46057388)

  • 现在,每个预览都具有用于启动实时预览,在设备上预览,检查预览和重复预览的按钮。(47472549)

  • 画布具有添加修改器的全新集成体验。单击“检查预览”按钮以查看所选视图的修改器建议,并搜索要应用的修改器。(51696163)

  • 现在,代码完成功能为SwiftUI视图和修饰符插入了可编译的完成功能和示例。(55455037)

  • Xcode支持预览小部件。有关如何配置窗口小部件预览的示例,请参见。(56390347)Widget<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Preview<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Context

  • 现在,“属性”检查器提供了快速操作,用于编辑所选预览的名称,设备,布局,首选配色方案和可访问性文本大小。(56413241)

  • 如果框架是由选定方案中的应用程序链接的,则Xcode Previews现在支持在设备上预览框架中的视图。(57025579)

  • Xcode现在通过将修饰符添加到watchOS并发症中来支持预览SwiftUI watchOS并发症。(57848297)preview<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Context(_:)

  • Xcode现在支持App Clip的预览。(59227941)

  • Xcode现在可与适用于iOS 14和iPadOS 14的新Xcode预览应用程序连接,以大大改善设备上的预览。Xcode Previews应用程序无缝显示设备上Xcode Previews中的更改。首次使用设备上的预览时,Xcode预览应用会显示在设备的主屏幕上。与Xcode断开连接后,在设备上启动Xcode预览将恢复最后显示的预览。(59631753)

  • 现在,双击预览中的视图将选择相应的代码,并将键盘焦点移至源代码编辑器,从而可以快速编辑视图的内容。(60171349)

  • 画布的底部栏现在包含一个用于快速检查所选视图的按钮。(62990297)

  • 使用新协议将自定义SwiftUI视图和修饰符添加到Xcode库。(63154504)Library<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Content<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Provider

在Xcode 12 beta中解决

  • 针对iOS 14,macOS 11,watchOS 7和tvOS 14 SDK进行了重建,从而更改了的使用,从而可靠地领先于对齐视图。这是以前的行为,除非无法检测到中的单个静态视图。(59722992)

项目编辑

Xcode 12 Beta中的新功能

  • 文档类型,导出类型标识符和导入类型标识符窗格支持macOS 11中新的模板化文档图标。(59314567)

项目浏览器

Xcode 12 Beta中的新功能

  • 现在,项目导航器,源代码控制导航器,调试导航器(用于View Debugger和Memory Graph)和Reports导航器中的选择将跟踪活动编辑器的内容。(9546415)(FB5634395)

  • Xcode的导航器现在尊重系统的“侧边栏图标大小”,并允许独立于该设置进行更改。(11619444)

  • 现在,在“查找”导航器中的文件结果将使用显示其工作区位置的路径进行装饰。(47196462)

  • 现在,项目导航器可以在键入过滤条件并按Enter时控制文本匹配样式(“包含”,“不包含”,“开头为”或“结尾为”)。(56474089)

  • 现在,“快速开放”比赛更具针对性和重点。快速打开更适合查找不连续的单词匹配。键入“ resetDownload”与您期望的“ resetDocumentDownload”匹配。提高的准确性着眼于最佳匹配,而排除了最差的匹配。(59065704)

  • 跳转栏,方案菜单和运行目标选择器中的文本过滤得到了显着改善。它显示最佳匹配,而压制最差匹配。过滤频繁出现的字符(例如“ init”)将仅显示init方法,而不是每个包含i,n,i,t的符号。(59597035)

在Xcode 12 beta中解决

  • 解决的在项目结构中添加和移动项目时发生的崩溃。(48644008,57752303)

  • 改进了项目导航器的性能,尤其是“项目导航器中的显示”和对组的递归展开/折叠操作。(49189414,60245991,6092575)

  • 过滤文本和SCM状态的项目结构时,提高了结果的稳定性和准确性。请注意,结果现在需要匹配所有过滤条件,而不是任何条件。(57708582、58099589、62128435)

重构

Xcode 12 Beta中的新功能

  • 现在,“编辑器”>“重构”>“重命名”将使用带有反引号转义的定义或引用来处理重命名符号。(46409010)

服务器

在Xcode 12 beta中解决

  • 您可以在Xcode Server机器人的“存储库”选项卡上选择用于集成的分支。(59068222,58615215)

仿真器

Xcode 12 Beta中的新功能

  • 模拟器可以全屏模式显示模拟的设备,也可以将其窗口平铺在Xcode旁边。(32866357)

  • Simulator现在支持watchOS 7的64位和32位进程。要验证watchOS项目在Simulator中是否为64位纯净,请确保ARCHS将其设置为默认值。(54654060)

  • 窗口>停留在最前可使设备窗口位于其他应用程序窗口的前面。(57060945)(FB7439463)

  • 当设备窗口失去焦点时,它将暂停捕获从“将指针发送到设备”和“将键盘输入发送到设备”的输入事件,直到模拟器重新获得焦点。(57351155)

  • 模拟器默认为内置麦克风,除非您明确选择其他音频源。这样可以避免在蓝牙耳机上触发电话呼叫模式,而这会在听音乐时降低音频质量。(59338925,59803381)

  • 模拟器支持为支持该功能的设备模拟“邻近交互”。在屏幕上四处拖动设备窗口将更新两个设备之间的模拟距离。窗口在屏幕上的距离越远,报告的距离就越大。(62227375)

在Xcode 12 beta中解决

  • 现在,“下载组件”首选项窗格会提示您一次身份验证,以下载和安装旧版模拟器,而不是每次安装时都提示进行身份验证。(22993731)

  • 当客户端快速连接和断开连接时,CoreSimulatorService不会使用太多的CPU。(53220616)

  • 模拟器现在允许选择“物理尺寸”,“点精确”和“像素精确”尺寸选项,即使所选选项导致部分窗口不在屏幕上。(56163353)(FB7366108)

  • 现在,从应用程序商店更新Xcode,移动Xcode或重命名Xcode时,模拟器运行时仍然存在。(58100481)

  • 在按住键的情况下进入键盘捕获或指针捕获模式时,Simulator不再将这些键卡在macOS中。退出捕获模式时,正确的向左或向右按​​键向上事件将传递给来宾,以防止其认为修饰键已卡住。(60174685)

  • 模拟器不再在自定义设备集中创建默认设备,从而恢复了Xcode 11.3的行为。(63750578)(FB7717786)

源代码编辑器

Xcode 12 Beta中的新功能

  • 与Xcode 11.5相比,Swift函数体内的重复代码完成调用现在快15倍。(59830963)

在Xcode 12 beta中解决

  • 修复了调试控制台中大量日志输出可能导致的崩溃。(49261867)

  • 编辑器现在保留粘贴文本的相对缩进,而不是重新缩进文本。可以在“首选项”>“文本编辑”>“缩进”中进行控制。(52348424)

  • 修复了一个问题,即在大型项目中,源文件的层次结构大多是平坦的,该过程会占用大量内存。(53835770)com<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">.apple<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">.dt<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">.SKAgent

  • 修复了代码完成有时会提示类名而不是变量名的问题。(56887185)

  • 修复了系统标题的跳转栏中显示错误内容的问题。(57509269)

  • 修复了粘贴到多个插入点会将选择重置为单个插入点的问题。(57572639)

  • 修复了代码完成会在最近使用的列表中建议使用不区分大小写的匹配候选项而不是小写且区分大小写的匹配候选项的问题。(57962108)(FB7495633)

  • 修复了以下问题:在文档中键入反引号,而未选中“文本编辑”首选项“启用键入完成”,则会插入额外的反引号。(58011556)

  • 修复了在Xcode之外编辑文件会导致Xcode在启动时崩溃的问题。(58272739)

  • 已解决的问题,其中的Xcode不会正确保存编辑DateData财产清单文件中的值。(58836269)

  • 改进了代码补全中的显示顺序,以优先考虑与参数类型匹配的符号。(59066628)

  • Swift代码完成现在支持用户定义的标称类型的可调用值。代码完成会在基本表达式后加上左括号后显示调用签名。(59302416)

  • 现在,当调试器点击折叠代码或在Breakpoint导航器中选择折叠代码时,隐藏在多个代码折叠中的断点现在可以正确展开折叠的代码。(59445409)

  • 修复了折叠代码有时会导致崩溃的问题。(60170676)

  • 修复了多个大型重构后Xcode会挂起的问题。(61749114)

  • 修复了编辑Objective-C类别名称有时会导致崩溃的问题。(61860583)

  • 修复了尾随空格折叠代码有时会导致崩溃的问题。(62218489)(FB7673070)

StoreKit

Xcode 12 Beta中的新功能

  • Xcode 12支持使用新的本地StoreKit测试环境直接在Simulator或连接的设备中测试应用内购买。

    在App Store Connect中进行设置之前,请在本地配置应用内购买信息以进行测试,而无需连接到App Store服务器。有关入门的更多信息,请参阅在Xcode中测试应用内购买在Xcode中设置StoreKit测试。测试环境支持早期开发,单元测试和调试应用内购买,如使用Xcode和Sandbox在开发的所有阶段进行测试中所述。

    使用StoreKitTest框架创建和自动化测试以处理应用内购买交易。StoreKitTest支持对应用程序内购买方案的全面测试,包括订阅状态的更改,订阅优惠,恢复购买,要求购买,购买中断等。

    控制测试环境,包括清除购买历史记录,重置商品资格以及加快测试订阅的续订时间。(56504988)

迅速

Xcode 12 Beta中的新功能

  • 快速缩进已得到全面改进,大大改善了链式方法调用的缩进,尤其是那些涉及嵌套或尾随闭包的调用。(25519439)(FB5472851)

  • 改进了使用SwiftUI的List初始值设定项时的错误消息,该初始值设定项接受的可识别数据的集合的元素类型不符合Identifiable。(51519565)(FB6130940)

    例如,以下代码:

    import SwiftUI
    struct NotIdentifiable {}
    let data: [NotIdentifiable] = []
    List(data) { _ in    Text("Row")}

    现在会产生错误消息:

    error: initializer 'init(_:rowContent:)' requires 'NotIdentifiable' conform to 'Identifiable'List(data) { _ in^
  • Swift缩进现在使guardand if语句中的条件列对齐。(53131527)(FB6688335)

    例如:

    guard let x = someOptional,      let y = anotherOptional else {  // ...}
  • 现在,编译器将defaultDictionary访问期间计算自变量的代码中诊断专有性违规。(SR- 11700,56378713)

    struct Container {  static let defaultKey = 0
      var dictionary = [defaultKey:0]
      mutating func incrementValue(at key: Int) {    dictionary[key, default: dictionary[Container.defaultKey]!] += 1  }}// error: overlapping accesses to 'self.dictionary', but modification requires exclusive// access; consider copying to a local variable//     dictionary[key, default: dictionary[Container.defaultKey]!] += 1//     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// note: conflicting access is here//     dictionary[key, default: dictionary[Container.defaultKey]!] += 1//                              ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~

    可以通过default使用局部变量预先计算自变量来避免排他性冲突。

    struct Container {  static let defaultKey = 0
      var dictionary = [defaultKey:0]
      mutating func incrementValue(at key: Int) {    let defaultValue = dictionary[Container.defaultKey]!    dictionary[key, default: defaultValue] += 1  }}// No error.
  • 现在,当不太可能发生参考循环时,Swift允许隐式使用selfin @escaping闭包。(SE- 0269,56408426)

    首先,如果用户已在闭包的捕获列表中明确捕获,则现在允许隐式使用selfin @escaping闭包self,因此以下代码现在有效:

    class Test {  var x = 0  func execute(_ work: @escaping () -> Void) {    work()  }  func method() {    execute { [self] in      x += 1    }  }}

    其次,当为值类型时,隐式self@escaping闭包中可用self,使以下代码有效:

    struct Test {  var x = 0  func execute(_ work: @escaping () -> Void) {    work()  }  func method() {    execute {      x += 1    }  }}
  • Swift 5.3引入了一种特殊的文字,它生成了当前源文件的路径。#file<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Path

    在Swift 5.3中,并具有相同的行为。但是,Swift的未来版本将更改为生成更短的,更能保护隐私的字符串,该字符串更适合于生产二进制文件。对于测试和其他需要源文件完整路径的代码,将继续生成一个。(SE- 0274,58586626)#file<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Path``#file``#file``#file<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Path

    此版本发布较早,以缓解行为改变时将来的过渡。一旦的行为的变化,你需要检查任何使用在自己的项目-尤其是在他们的测试-看他们是否应该使用来代替。但是,默认行为在Swift 5.3中不会更改,因此您无需执行此操作。如果您想尽早更新项目,则可以通过添加到Xcode项目的OTHER_SWIFT_FLAGS构建设置中来启用Swift 5.3中的行为更改。#file<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Path``#file``#file``#file<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Path``#file``#file``-enable-experimental-concise-pound-file

  • 现在,使用默认初始化的情况下,具有附加属性包装器的属性可以使用类型推断来推断包装的值类型,而默认初始化在包装器属性上没有空括号。例如:

    @propertyWrapperstruct IntWrapper {  var wrappedValue: Int { 0 }}
    struct UseWrapper {  @IntWrapper var value}

    包装的属性使用的默认初始化,并且依赖于类型推断来推导类型包装的值类型为。(59471019)

  • 为了缩短增量编译,Swift现在为每种类型(和协议)主体保留单独的指纹。这些类型的体指纹意味着,如果你改变的身体structenumclass,或protocol在一个文件中还定义了其他structenumclassprotocols,仅将更改的实体将被算作“脏”重新编译其他文件的目的。例如,假设您有一个定义两个的文件structs

    struct A {}struct B {}

    并将成员添加到A

    struct A {  var x = 17}struct B {}

    在进行此更改之前,编译器将使用A或重新编译任何文件B。现在,编译器不会重新编译仅使用的文件B

    如果您在使用此功能时遇到问题,请-disable-type-fingerprints通过Other Swift Flags构建设置传入Swift编译器以将其禁用。如果仍然遇到问题,请-disable-fine-grained-dependencies通过Other Swift Flagsbuild设置传入Swift编译器,以禁用新的依赖项基础结构。(59954707)

  • where即使声明本身没有其他通用参数,泛型上下文中的声明现在也可以具有子句。(SE- 0267,64228492)

    例如:

    struct Box<Wrapped> {    func boxes() -> [Box<Wrapped.Element>] where Wrapped: Sequence { ... }}
  • lazy属性现在可以具有和/或观察者。(64229062)did<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Set``will<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Set

在Xcode 12 beta中解决

  • Swift现在支持对协议方法的未应用引用。以前,这仅适用于在结构,枚举和类中定义的方法。(21289579)(FB5819096)

    例如:

    protocol Cat {func play(catToy: Toy)}
    let fn = Cat.play(catToy:)fn(myCat)(myToy)
  • 当元素对齐时,快速缩进不再使出现在调用参数,参数列表,数组和字典文字或元组中的多行表达式缩进。(48934744)

  • 实验性函数生成器功能现在已正确应用于单表达式闭包。例如:

    @_functionBuilderstruct ArrayBuilder<T> {    static func buildBlock(_ values: T…) -> [T] {        values    }}
    func array(@ArrayBuilder<Int> builder: () -> [Int]) -> [Int] {    builder()}
    array { 0 }

    这些闭包已经在SwiftUI中起作用了,因为它们只返回一个View,这就是将转换应用于它们的全部工作。但是,并非所有函数构建器转换都具有此属性,现在它们应该可以正常使用。(56340587)View<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">Builder

  • 修复了使用属性包装器(其包装的值具有变异的getter和非变异的setter)时发生的编译器崩溃。(56467140)

  • Swift编译器不再在兼容性标头中为空扩展名或仅具有私有成员且没有公共合规性的扩展名打印导入。

    依赖那些可移植导入的Objective-C / C源文件可能会引起有关缺少声明的错误,因此需要使用显式导入进行更新以按预期进行编译。(57133517)

  • 修复了由于将使用导入的Objective-C接口导入Swift 而导致的崩溃。(59306590)(FB7571694)objc<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">_runtime<wbr style="quotes: &quot;“&quot; &quot;”&quot;; font-style: normal;">_name

  • 修复了在子类中使用附加的属性包装器重写属性以实现属性观察器时发生的编译器崩溃。(60093232)(FB7615016)

  • 修复了初始化属性包装器可以在初始化所有属性之前调用属性观察器的问题self。(60832285)

  • 修复了全局重命名可能会更改SDK标头的问题(62607314)(FB7681195)

迅捷包

Xcode 12 Beta中的新功能

  • 现在,您可以为Swift包的目标依赖项声明条件,例如通过平台限制依赖项。这使您可以更加灵活地描述支持多个平台的复杂目标依赖关系。(40237402)

  • Swift软件包现在可以包含资源,例如图像,资产目录,情节提要和其他文件。Xcode构建依赖于程序包的应用程序时,会将程序包的代码和资源添加到应用程序包中,以在运行时使用。有关更多信息,请参见使用Swift软件包捆绑资源。(54361843)

  • Swift软件包现在可以出售作为XCFrameworks分发的预构建库,从而允许依赖于不能作为源代码分发的库。Xcode构建使用此类软件包的应用程序时,会将库嵌入到应用程序包中。有关更多信息,请参见将二进制框架分发为Swift软件包。(56592977)

  • Swift软件包现在可以包含软件包中任何资源的本地化内容。除了资产目录中的本地化内容外,Xcode还支持文件.lproj夹中单独的本地化文件。有关更多信息,请参见本地化软件包资源。(56925255)

测试中

Xcode 12 Beta中的新功能

  • 现在,在启用了测试计划的方案中运行单个测试会跳过该测试计划中已禁用的配置。现在,按住Option键或按Control键并单击一个测试菱形,表示已禁用活动测试计划中的所有配置,并且如果禁用了某些配置,则包括“在所有启用的配置中运行”选项。(58547265)

  • 如果您在源代码编辑器中单击测试或测试类旁边的菱形,并且该测试不在活动方案或测试计划之外,则Xcode将显示一个工作表,允许您选择包含您所测试的特定方案或测试计划。想跑。(59223004)

  • 现在,“测试报告”中的“失败”和“跳过范围”栏按钮将显示任何运行失败或被跳过的测试,而不是仅显示所有运行失败或被跳过的测试。(59401757)

  • 除了失败的测试和仅包含在活动方案中的测试,测试导航器现在还支持过滤跳过的测试。(59519058)

  • 现在,在已启用测试计划的方案中运行测试时,Xcode会接受该方案的“运行”操作的“选项”选项卡中的“调试XPC服务”设置。(60439063)

  • 现在可以在“测试计划编辑器”中自定义“默认执行时间津贴”和“最大执行时间津贴”。这些设置在启用“测试超时”时适用。(61607966)

  • 现在,当UI查询超时或目标应用程序没有迅速变为空闲时,XCTest现在在UI测试期间附加一个spindump诊断。(62076023)

在Xcode 12 beta中解决

  • 现在,在切换到其他导航器或从其他导航器切换以及更改过滤器和方案时,“测试”导航器可以正确记住其选择状态和滚动偏移。(16308307,24918098)

  • 解决了一个错误,该错误导致在未打开“测试”导航器时,阻止菱形出现在源代码编辑器中的测试方法和类旁边。(54216504)

  • 记录了没有任何源代码位置的测试失败后,Xcode现在会在源代码编辑器中显示失败注释,并提供一个链接,以从“问题”导航器跳至该测试方法。(58118593)

  • 解决了可能导致键盘修饰符在调用后如果该块引发未处理的异常而持续存在的问题。(58376575)

  • 现在,包含参数的XCTest API 使用Swift 5.3中引入的文字作为默认参数值。XCTest需要到源文件的完整文件路径,以进行错误报告并跳转到Xcode中的故障。有关更多信息,请参见关于[SE–0274]

  • 现在,可以在项目导航器中的目录级别之间移动测试计划文件,从而在方案中正确更新对这些文件的引用。(59171975)

  • 如果已在UI测试中删除了Xcode,则Xcode将重新安装被测试的应用。(60159203)(FB7616398)

  • XCTest现在支持使用XCTSkipin 和将测试标记为已跳过。尽管在调用拆解方法时测试方法可能已经运行完毕,但这对于“追溯”标记测试不符合条件或结果无效可能很有用。(60634152)

  • 解决了该方案使用测试计划时xcodebuild不尊重该选项的问题。(62605817)

推荐

基础文章推荐

经典教程推荐

技术源码推荐

推荐文章

CoreData篇

Combine篇

TextField篇

JSON文件篇


一篇文章系列

技术交流

QQ:3365059189
SwiftUI技术交流QQ群:518696470

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付 99.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值