xcode13正式版发布,来看看有什么新特性(代码片段)

小集 小集     2022-11-28     250

关键词:


Xcode 13 包括适用于 iOS 15、iPadOS 15、tvOS 15、watchOS 8 和 macOS Big Sur 11.3 的 SDK。Xcode 13 Release Candidate 支持 iOS 9 及更高版本、tvOS 9 及更高版本以及 watchOS 2 及更高版本的设备上调试。Xcode 13 需要运行 macOS 11.3 或更高版本的 Mac。

\\
$(SRCROOT)/include/component2
  • 当使用 -xcconfig 命令行标志和 XCODE_XCCONFIG_FILE 环境变量将 xcconfig 文件传递给 xcodebuild 时,Xcode 会使用 New Build System 语义解析它们,该语义也支持条件参数。

  • 通过将 SUPPORTED_PLATFORMS 构建设置设置为您支持的平台列表并将 ALLOW_TARGET_PLATFORM_SPECIALIZATION 设置为 YES,将框架配置为在单个构建操作中为多个平台构建;

  • 可以在构建阶段使用平台过滤器,并为所有支持的平台定位依赖项。

  • 当发生构建失败时,xcodebuild 现在会在构建日志末尾的摘要中显示每个失败命令的目标和项目名称;

  • 当脚本阶段或自定义构建规则声明不属于构建输入的一部分,且未声明为构建中任何其他任务的输出依赖项的输入依赖项时,构建系统会发出警告;

  • 构建选项表现在包括一个依赖顺序选项,它取代了并行构建选项。


  • Core Data
  • 使用 Core Data 模型编辑器的属性检查器中的 Allows Cloud Encryption 复选框来支持 CloudKit 加密记录字段功能。


  • Core ML
  • Xcode 的 Core ML 模型编辑器现在支持新的 Core ML 包格式 .mlpackage,以及对其元数据和描述的直接编辑。

  • 当部署目标是 macOS 12、iOS 15、tvOS 15 或 watchOS 8 时,Swift 为 Core ML 模型生成的接口现在包括通过强类型 MLShapedArray 属性访问多维输入和输出。


  • Create ML
  • 两个新模板:Hand Pose Classification 和 Hand Action Classification,可用于训练模型来解释手部姿势;

  • Sound Classification 模板的新 Audio Feature Print 选项能够以更高的准确度、更低的延迟和更小的模型尺寸更快地训练声音分类器模型。


  • 调试
  • Xcode 的控制台现在支持通过 Editor > Wrap Lines 菜单项切换换行;

  • 要在一行上设置列断点,请按住 Command 键并单击表达式,然后从 Actions 菜单中选择 Set Column Breakpoint;

  • 如果调试器尚未解析断点,则断点的图标将更改为占位符字形;


  • 文档
  • Xcode 可以根据 Swift 代码中的注释以及随附的文章生成文档;

  • 当编写项目文档时,Code completion 会提供建议。它在源文件中编写文档注释和在 .docc 目录中编写标记文件时提供建议。

  • Quick Help 现在使用 DocC 来呈现项目文档并在文档窗口中呈现指向项目文档的链接;


  • 索引
  • Xcode 索引宏名称。它们现在出现在 Open Quickly 中。


  • Instruments
  • Instruments 中的调用树视图和扩展详细信息视图现在用“[inlined]”标记指示内联函数。

  • 通过详细视图导航栏更容易发现不同的视图。现在可以通过快捷方式(Command-1、Command-2 等)访问详细视图。

  • 在命令行上使用 xctrace export 从包含Allocations, Leaks, 和 VM Tracker instruments 的跟踪中导出表数据。

  • Instruments 扩展详细信息视图,现在在选择关联的详细信息视图行时显示 os_log 和 os_signpost 消息和回溯。

  • Run Information 视图现在出现在 Instruments 工具栏的活动视图区域中。

  • CPU Counters 模板现在更加可靠并且具有更好的性能;

  • leaks 命令具有三种新模式:-referenceTree-autoreleasePools和 -debug

  • Network 模板现在包含一个用于捕获和分析 HTTP 流量的新工具

  • Instruments 时间线视图现在使用基于 Metal 的渲染器以获得更流畅的体验,包括对时间线可用性的整体改进;

  • os_signpost 工具的记录设置现在支持在记录期间为 dynamicTracing 和 dynamicStackTracing 日志记录类别指定 os_signpost 子系统。

  • 新的 CPU Profiler 模板允许使用基于周期的性能监控中断 (PMI) 分析 CPU 工作负载

  • 为了支持在 macOS Monterey 和 iOS 15 中生成的新 JSON 格式的崩溃日志,Instruments 包含了一个新的 CrashSymbolicator.py 脚本。


  • Interface Builder
  • 您现在可以在大纲视图中手动重新排序 Storyboard 场景。

  • macOS 的 Storyboard 和 XIB 使用 UINIbEncoder 进行编译,以减少文件大小并提高运行时性能;

  • 现在可以使用键盘选择和导航大纲视图组,例如 Constraints;

  • Interface Builder 有一个重新设计的画布底部栏,带有用于更改设备和布局的弹出窗口,以及用于更改设备外观和方向的开关。

  • 添加了对 UIButton 和 UIBarButtonItem 上的 changesSelectionAsPrimaryAction 属性的支持;

  • 支持从对象库中创作和拖动 iOS Core Location Buttons

  • 添加了对用于静态表格视图中表格视图单元格的新内容配置样式的支持

  • UITabBar 和 UIToolbar 检查器现在支持配置 scrollEdgeAppearance

  • Interface Builder 现在支持 UIButton.menu

  • 编辑启动 storyboards 时,如果总图像资源大小超过运行时阈值限制,Xcode 会发出设计时警告。 

  • Watch Storyboards 的预览窗格现在显示画布样式的边。 

  • 现在可以在 Interface Builder 场景中预览以下辅助功能设置:动态类型、粗体文本、按钮形状、开/关标签、增加对比度和降低透明度。

  • 现在可以启用 UILabel 的 showsExpansionTextWhenTruncated 属性以在标签被截断时显示工具提示扩展。

  • 从文档检查器 > 模拟指标 > 场景大小自定义 Mac Catalyst 模拟场景大小

  • 通过属性检查器为使用 Mac Catalyst 构建的应用程序指定 UIControl 对象上的工具提示。 

  • Interface Builder 现在支持 UIBarButtonItem.menu

  • Interface Builder 现在支持新的 UITextContentType 属性,包括:shippingTrackingNumber、flightNumber 和 dateTime。

  • iOS、iPadOS、macOS 和 tvOS 场景支持两种新的 SF Symbol 渲染模式:分层和调色板。 

  • Interface Builder 现在支持使用 UIButtonConfiguration 样式创作按钮,包括普通、灰色、着色和填充。

  • UINavigationBar、UITabBar 和 UIToolbar 检查器现在支持配置 UIBarAppearance 实例。 

  • UIButton 和 UISlider 支持为使用 Mac Catalyst 构建的应用程序选择首选的行为风格。 

  • 在视图控制器的大小检查器中使用 Freeform 模拟度量的 Storyboard 场景现在可以直接在画布中使用调整大小旋钮调整大小。

  • NSButton 斜角类型在 macOS 12 中支持斜角颜色。

  • 在适用于 macOS 12 的应用程序中,您可以使用属性检查器中的 localize 属性在非系统 NSMenuItem 上配置本地化的等效键选项。

  • 在 iOS 15 的应用程序中,可以使用属性检查器中的 localize 属性在非系统 UI 菜单命令上配置本地化的等效键选项。


  • 链接
  • dyld 共享缓存已拆分为多个文件

  • 使用 macOS 12 或 iOS 15 或更高版本的部署目标构建的所有程序和 dylib 现在都使用链式修复格式

  • 统一 dyld2 和 dyld3。现在所有平台上只有一个 dyld。

  • DriverKit 运行时现在有一个 dyld 共享缓存。

  • 如果 DYLD_PRINT_SEARCHING 环境变量在启动时设置为 1,则 dyld 会打印出它搜索的所有位置的路径,以找到要加载的 dylib。


  • 本地化
  • Xcode 现在可以打开 Xcode 本地化目录 (.xcloc) 以查看和编辑字符串和其他本地化资产的翻译。

  • 新的 Use Compiler to Extract Swift Strings 构建设置调用 Swift 编译器从 Text()、String(localized:)、AttributedString(localized:) 初始值设定项、SwiftUI 的 LocalizedStringKey 和 Foundation 的 StringLocalizationKey 中准确地提取字符串插值和字符串文字。

  • 添加了对 genstrings 和本地化导入和导出的支持,以提取在 Objective-C 代码中使用新 NSLocalizedAttributedString 宏的字符串。 

  • 导出本地化时,多个本地化中的错误现在会聚合到一个警报对话框中。 

  • 在导出以进行本地化时,Xcode 会自动从 Info.plist 文件中提取 NSGKFriendListUsageDescription、NSLocationTemporaryUsageDescriptionDictionary 和 NSFallDetectionUsageDescription。


  • Metal
  • Metal Debugger 现在支持 Selective Shader Debugging,它允许您限制大型 Compute 着色器的调试范围。这导致更快的着色器调试器会话创建和迭代时间。

  • Metal Debugger 中的新捕获控件可让您精确控制来决定捕获 Metal 工作负载的哪个部分,以及捕获多个帧或范围的选项。

  • Metal Debugger 现在支持导入 metallibsym 文件,这使您可以在应用程序中进行 Metal 着色器调试和分析,而无需在您的 metallib 中嵌入着色器源。

  • Metal Debugger 中的 Apple GPU 可以使用 GPU 时间线。使用此时间线可视化和检查 Metal GPU 命令的并行执行以及一组精选的 GPU 计数器。

  • Metal 管道状态对象现在在 Metal Debugger 中表示为资源,包括一个全新的 Metal Pipeline States 和 Metal Libraries 查看器,以及 Metal Debugger 的 Memory Viewer 中的 Metal Pipeline 状态的 GPU 内存。

  • Instruments 的 Metal System Trace、Xcode 中的 Metal Debugger 以及全新的 Condition Inducer 中提供了新的一致 GPU 性能状态分析工作流。

  • 现在可以在 Metal System Trace 模板的记录选项中覆盖 GPU 性能状态。

  • Metal Debugger 现在支持 Metal 光线追踪以及新的高级加速结构查看器。

  • Metal 应用程序录制设置现在特定于正在配置的设备。


  • Organizer
  • Xcode 现在可以近乎实时地提供崩溃报告,数据保留时间更长。

  • Xcode 现在提供具有更多过滤功能和更多统计信息的崩溃报告。

  • 现在可以通过 URL 共享崩溃报告

  • Xcode 现在会显示您的崩溃问题的 TestFlight 反馈,以便更好地了解问题所在

  • 现在可以根据任何特定的历史应用程序版本、任何特定的历史应用程序版本、产品类型(如 App Clip、应用程序扩展或主应用程序)以及 TestFlight 或 App Store 的发布历史记录过滤 Energy 报告列表。

  • Xcode Organizer 中的新 Scroll Hitch Goals 使分析应用程序版本的滚动体验变得容易

  • 当您查看应用的指标时,您现在可以选择查看应用的 App Clip 的指标

  • Xcode Organizer 中新的 Terminations 指标显示前景和背景终止,按原因细分

  • Xcode Organizer 中的历史数据现在可以为每个指标图表显示最多 16 个应用程序的最新版本,提供应用程序在更大时间窗口内的性能趋势。

  • 现在,当您查看指标时,检查器会显示您应用的发布日期信息。

  • Xcode Organizer 中 Disk Write Reports 的 Qualitative Insights 在检查器中显示称为 Insights 的新信息

  • 现在 Xcode Organizer 中提供了 Smart Insights,可帮助您比以前更快地发现应用程序的功能和性能回归


  • 预览

    预览现在支持在预览视图时检查视图的辅助功能元素


    Project Navigator
  • 当 Products 组位于默认位置时,项目导航器会隐藏它

  • Move Focus to Editor 命令现在解释 vim 方向移动键。

  • schema 编辑表不再有最大尺寸


  • 签名和分发
  • xcodebuild 现在支持使用 App Store Connect API 密钥对 Apple Developer 网站进行身份验证。

  • Xcode 现在提供在您第一次将新应用上传到 App Store Connect 时创建应用记录的功能。

  • 将应用上传到 App Store Connect 时,Xcode 中的分发助手会检测您的应用是否具有有效的内部版本号 (CFBundleVersion)。

  • Xcode 分发助手中的自动签名现在支持云签名。

  • Xcode 13 支持在 Mac 上为 TestFlight 配置应用程序

  • 您现在可以在命令行上使用 notarytool 与 Apple 公证服务进行交互


  • Source Control
  • 现在,您可以在登录 GitHub 或 Bitbucket Server 帐户后,使用 Xcode 的源代码控制功能创建、审查和合并拉取请求。

  • 您现在可以从文档选项卡栏中的任何编辑器(或编辑器拆分)中启用代码审查,默认情况下它会在内嵌演示中显示比较。


  • 源码编辑器
  • Xcode 13 引入了 Vim 键绑定,在源代码编辑器中模拟 vim 体验并结合现有的编辑器功能。 

  • 在首选项中启用 Vim 键绑定,使用文本编辑 > 编辑中的启用 Vim 键绑定选项。

  • 可以通过选择 Edit > Copy Location 以 <filename>:<line-number> 的形式将所选内容的当前位置复制到剪贴板。

  • 在 Swift 中将占位符扩展为闭包时,代码完成使用闭包的参数名称而不是 <#Type#>。 

  • Xcode 13 中的 Swift 语法高亮显示是即时且无闪烁的,无论是在文件之间进行编辑还是导航。 

  • 即使您的代码不完整或您的项目无法编译,Swift Jump to Definition 现在也能提供更具弹性的体验。

  • 从 Swift 类、协议或方法声明跳转到定义还可以轻松导航到整个工作区中的所有子类、扩展和符合协议的类型。

  • Xcode 13 包括重新设计的 Swift 代码完成功能,可最大限度地提高可靠性和性能,尤其是在项目源代码中存在结构和逻辑不一致的情况下。


  • Static Analyzer
  • 静态分析器现在警告带有副作用的断言、无限循环和更多 C++11 std::move 误用情况。 


  • StoreKit
  • Xcode 中的 StoreKit 测试支持对使用 StoreKit 新的现代基于 Swift 的 API 构建的应用内购买进行全面测试。


  • Swift Packages
  • 根包和基于分支的包依赖项现在可以在其目标设置中使用 unsafeFlags。

  • Swift 包现在可以声明 Mac Catalyst 的部署目标,并且现在可以在构建条件中将 Mac Catalyst 指定为平台。

  • 当包声明工具版本为 5.5 或更高版本时,macOS 的构建条件不再适用于 Mac Catalyst。 

  • Swift Packages 现在支持 DriverKit 作为平台。

  • 当您尝试导入本地尚不可用的模块时,Xcode 现在会建议您添加的集合中的包。

  • 现在可以在 Add Packages 表中添加精选的包集合。

  • 单元测试现在可以直接测试可执行目标。


  • Swift 重构
  • 新的重构有助于迁移到异步代码。“Convert Call to Async Alternative”可用于将完成处理程序作为最后一个参数的调用,并重构它们以使用新的异步语言功能,假设该函数的异步等效项已经存在。

  • 现在可以将新的 Add Async Wrapper 重构操作应用于具有完成处理程序的函数。


  • 测试
  • Source Editor 和 Test Navigator 具有 Run Test 操作的两个新变体,它们无需构建即可运行测试选择。

  • 您现在可以使用 XCTPerformanceMeasurementPolarity 枚举自定义如何将性能测试的自定义指标的测量值与设置的基线进行比较。

  • XCTest 现在能够在受支持的 iOS 设备上的 UI 测试中合成指针交互。

  • Xcode 现在为在运行测试时崩溃的进程收集代码覆盖率数据。

  • 性能 XCTests 现在支持测量应用程序启动时的 CPU 使用率 (XCTCPUMetric)、磁盘写入 (XCTStorageMetric) 和内存使用率 (XCTMemoryMetric)。 

  • xcodebuild 有一个新选项 -enablePerformanceTestsDiagnostics YES,用于收集性能 XCTest 的诊断信息。

  • 现在在所有新创建的测试计划中默认启用测试超时。通过转换方案创建的测试计划需要手动启用测试超时以保留现有行为。

  • 用户界面测试现在支持在 macOS 中使用 swipeUp、swipeDown、swipeLeft 和 swipeRight 系列方法。

  • 性能测试现在支持在 macOS 中为动画 os_signpost 间隔使用 XCTOSSignpostMetric 时收集故障指标。

  • XCTest 现在支持测试重复,且有三种测试重复模式。

  • 新的透明屏幕覆盖显示自动化运行时的活动,并显示描述如何停止自动化的文本。

  • 在 macOS 中,或在具有密码的设备上使用自动化时,您必须从管理员帐户运行自动化,并且必须进行身份验证以授权自动化。

  • XCTest 现在支持从 App Tracking Transparency 框架重置受保护资源“用户跟踪”的授权状态。

  • 用 Swift 编写的测试方法可能会被标记为异步或异步抛出,以允许调用和等待来自异步 API 的结果,作为 Swift 并发语言功能的一部分。

  • XCTestCase 现在包含一个 addTeardownBlock 方法重载,其闭包参数是 async throws

  • xcodebuild 现在支持将某些环境变量传递给测试运行器进程。

  • XCTExpectFailure 函数现在包括用于自定义某些选项的 Swift 重载,而无需创建 XCTExpectedFailure.Options 实例

  • XCTest 现在能够在 watchOS UI 测试中合成 Digital Crown 旋转。

  • XCTest 现在包括 setUp 和 tearDown 实例方法的异步抛出重载

  • 测试现在可以从任何线程调用 XCTestCase.expectation(description:)——以及其他返回 XCTestExpectation 的 XCTestCase API。这消除了之前测试从主线程调用这些 API 的要求,并允许使用它们的现有测试采用异步,而无需 @MainActor。

  • ios之深入解析xcode13(ios15)正式版发布的新特性(代码片段)

    一、前言Xcode13包括适用于iOS15、iPadOS15、tvOS15、watchOS8和macOSBigSur11.3的SDK。Xcode13ReleaseCandidate支持iOS9及更高版本、tvOS9及更高版本以及watchOS2及更高版本的设备上调试。Xcode13需要运行macOS11.3或更高版本的Mac。二、通用Xcode13包括对Sw... 查看详情

    2023年第一弹,flutter3.7发布啦,快来看看有什么新特性(代码片段)

    2023年新春之际,Flutter喜提了3.7的大版本更新,在Flutter3.7中主要有改进框架的性能,增加一些很棒的新功能,例如:创建自定义菜单栏、级联菜单、更好地支持国际化的工具、新的调试工具等等。另外Flutter3.7... 查看详情

    2023年第一弹,flutter3.7发布啦,快来看看有什么新特性(代码片段)

    2023年新春之际,Flutter喜提了3.7的大版本更新,在Flutter3.7中主要有改进框架的性能,增加一些很棒的新功能,例如:创建自定义菜单栏、级联菜单、更好地支持国际化的工具、新的调试工具等等。另外Flutter3.7... 查看详情

    xcode12.5新特性介绍(代码片段)

    ...beta版本,而iOS14.5则一直发布到beta8。RC版发布,正式版也不会太远,让我们一起来看看Xcode12.5版本的新特性。通用可以使用新的File 查看详情

    es2022正式发布!有哪些新特性?(代码片段)

    2022年6月22日,第123届ECMA大会批准了ECMAScript2022语言规范,这意味着它现在正式成为标准。下面就来看看ECMAScript2022有哪些新特性!总览:Top-levelAwaitObject.hasOwn()at()error.cause正则表达式匹配索引类1.Top-levelAwait在ES2017... 查看详情

    es2022正式发布!有哪些新特性?(代码片段)

    2022年6月22日,第123届ECMA大会批准了ECMAScript2022语言规范,这意味着它现在正式成为标准。下面就来看看ECMAScript2022有哪些新特性!总览:Top-levelAwaitObject.hasOwn()at()error.cause正则表达式匹配索引类1.Top-levelAwait在ES2017... 查看详情

    xcode11.4发布新特性(代码片段)

    Xcode11.4发布新特性Xcode11.4包含适用于iOS13.4,iPadOS13.4,tvOS13.4,watchOS6.2和macOSCatalina10.15.4的SDK。Xcode11.4版本支持在iOS8+,tvOS9+以及watchOS2+的设备上调试,同时需要运行macOSCatalina10.15.2+版本的Mac。通用•Xcode11.4可以构建和分发支持... 查看详情

    java11正式发布,这几个逆天新特性教你写出更牛逼的代码

    就在前段时间,Oracle官方宣布Java11(18.9LTS)正式发布,可在生产环境中使用!这无疑对我们来说是一大好的消息。作为一名java开发者来说,虽然又要去学习和了解java11,但内心还是欣慰的。我想至少你和我一样的心情:Java在手,天... 查看详情

    个推解读android13新特性,发布《android13适配指南》(代码片段)

    ...上传到Android开源项目(AOSP)中,Android13正式发布。自从2022年2月Android13第一个预览版上线以来,历经7个月的测试和优化,正式版本的Android13终于来了!Android13仍然聚焦个人隐私保护和安全ÿ 查看详情

    个推解读android13新特性,发布《android13适配指南》(代码片段)

    ...上传到Android开源项目(AOSP)中,Android13正式发布。自从2022年2月Android13第一个预览版上线以来,历经7个月的测试和优化,正式版本的Android13终于来了!Android13仍然聚焦个人隐私保护和安全ÿ 查看详情

    k8s生态周报|kubernetesv1.22.0正式发布,新特性一览!(代码片段)

    ...迎订阅知乎专栏「k8s生态」。Kubernetesv1.22已经在今天正式发布了,这是2021年的第二个正式发布的版本。此版本中共包含53项增强更新,其中13项达到stable,24项达到beta还有16项为alpha。当然,也有3项特性被标记为废弃。从今年的4... 查看详情

    java11正式发布,这8个逆天新特性教你写出更牛逼的代码

    Java11正式发布,这8个逆天新特性教你写出更牛逼的代码美国时间09月25日,Oralce正式发布了Java11,这是据Java8以后支持的首个长期版本。为什么说是长期版本,看下面的官方发布的支持路线图表。Java11正式发布,这8个逆天新特性... 查看详情

    ios之深入解析xcode14发布的新特性

    一、前言每年的WWDC,除了发布最新的iOS、iPadOS、watchOS、macOS外,苹果同样会更新Xcode。新版的Xcode带来了很有新特性,来适配各个新系统,同时提供更加便利的工具来提高开发效率。还有一个比较重要的是,Xco... 查看详情

    java14有哪些新特性?

    ...|弯月,责编|郭芮以下为译文:Java14即将在2020年3月正式发布。Java以6个月作为新版本的发布周期,和之前的版本发布一样,JDK14预计将在语言本身和JVM级别上带来一些新特性。如果我们看一下特性列表,我们会注意到一些开 查看详情

    python3.10正式版发布了,我发现了几个牛批新特性(代码片段)

    来源:juejin.cn/post/7015590447745613854Python3.10正式发布,你尝鲜了吗?本文参考自Python官方文档:PythonReleasePython3.10.0|Python.org[1]在正值国庆假期人山人海的2021年10月4号,Python官方正式发布了Python3.10.0[2]。 查看详情

    python3.10正式版发布了,我发现了几个牛批新特性(代码片段)

    来源:juejin.cn/post/7015590447745613854Python3.10正式发布,你尝鲜了吗?本文参考自Python官方文档:PythonReleasePython3.10.0|Python.org[1]在正值国庆假期人山人海的2021年10月4号,Python官方正式发布了Python3.10.0[2]。 查看详情

    xcode10的新变化(代码片段)

    XCode的正式版已经发布一个星期了,是时候总结一下XCode的新变化了.1调试预览的增强xcode10提供了新的调试时候对(NS)data的导出预览功能这里的Export,可以导出我们预览的NSData的内容,保存到一个文件中去,然后选择第三方的工具去打... 查看详情

    xcode8带来的新特性和坑

    ...以后不一定苹果又出什么尺寸的iPhone呢。 在iPhone6和6P发布的同一年,苹果推出的Xcode6中在原有的Autolayout的基础上,添加了SizeClasses新特性,通过这个新特性可以使用一个XI 查看详情