Xcode 11.2,请谨慎升级!

知识小集· 2019-11-06
本文来自 知识小集 ,作者 知识小集

Xcode 11.2 正式发布,新的版本并没有太大的改动,更多的是对现有的一些 BUG 进行修复,新特性也比较少,毕竟是小版本迭代。

不过,据喵神和一些升级 Xcode 11.2 的用户反馈,新版本问题依然不少,所以请谨慎升级。介于今年苹果的软件质量,这应该是司空见惯的事了。

本文翻译自 Xcode 11.2 Release Note,还请对照原文一起看。

设备

已解决问题

iOS 应用程序安装过程中的出现错误时将提示为“安装失败”,而不是提示“安装成功,但找不到该应用程序”。

Interface Builder

新特性

• 添加了对配置 WKInterfaceAuthorizationAppleIDButton 样式的支持。

已知的问题

• 在 iOS 12 及更早版本上加载视图时,在 Interface Builder 中将分段控件的 Selected Segment Tint Color 设置为命名颜色将会失败。

解决方法:在 awakeFromNib 方法中设置分段控件的 selectedSegmentTintColor。

解决的问题

• 修复了 UITabBarController 的问题,即从 storyboard 中解码实例会在屏幕的左端创建额外的视图。如果您通过创建 UITabBarController 的子类并在初始化程序中隐藏其他视图来解决 Xcode 11.0 或 11.1 上的此问题,则可以删除此替代方法。

• 修复了在用户定义的运行时属性中重新选择当前选择的颜色时,iOS / tvOS 项目崩溃的问题。

本地化

解决的问题

• 修复了将 xcodebuild 本地化导入引用 Swift 包的项目时崩溃的问题。

Previews

解决的问题

• Xcode Previews 现在支持在内部结构中使用静态变量。

• Xcode Previews 可以正确解析与项目的 SRCROOT 相关的构建设置。

• 修复了渲染宽度或高度为零的 macOS 视图时 Xcode 预览中的崩溃。

• 在渲染预览时,Xcode Previews 可以正确地将 BUILT_PRODUCTS_DIR 作为 DYLD_FRAMEWORK_PATH 传递,以允许您引用和解析已构建的框架和其他产品。

• 现在,使用 @ViewBuilder 标记的函数可以在 Xcode 预览中正确预览。

• Xcode Previews 现在可以正确地支持带有 @available 标记的结构,函数和其他类型。

• 修复了一些 SwiftUI 教程无法使用 Xcode Previews 构建或预览的问题。

• 修复了在检查某些颜色类型时,SwiftUI 检查器崩溃的问题。

模拟器

新特性

• simctl 视频录制现在可以产生更小的视频文件,支持 HEIC 压缩,并在可用的情况下利用硬件编码支持。此外,还恢复了在 iOS 13,tvOS 13 和 watchOS 6 设备上录制视频的功能。

注意

simctl 视频录制支持的标志和参数已更改。有关更多信息,请参见 xcrun simctl help io

• 模拟器现在有新的菜单项和键盘快捷键,可在 iOS 模拟器中调出应用程序切换器。

• 在 AVAssetExportSession 中,allExportPresets 类型方法将返回iPhone 11,iPhone 11 Pro和iPhone 11 Pro Max 模拟器中的预设。

xcrun simctl list --json 现在包含有关设备和运行时的更多信息,包括每个设备使用的设备类型。

已知的问题

• 第三方“endpoint security”软件可能会导致模拟器运行缓慢,系统冻结或阻止调试过程,使操作无法可靠地在模拟器中运行。有时这表现为调试服务器断开连接或模拟器应用程序接收到SIGKILL信号。

解决方法:卸载第三方软件。

解决的问题

• 修复了在运行旧版iOS的模拟设备中使用iCloud Drive时,macOS 10.15 Catalina上可能发生的崩溃循环。 (51392951、54282967、54818084)

• 修复了导致运行 iOS 13 的模拟设备显示黑色窗口而不启用外部显示器或 CarPlay 显示器的问题。

• 解决了阻止应用程序无法在 iOS 8.4 模拟器上安装的问题。

Swift编译器

新特性

• Swift 函数生成器使用一种新的类型检查算法,该算法可缩短编译时间并消除许多因 SwiftUI 繁重的代码而导致的“无法在合理的时间内进行类型检查”错误的情况。

解决的问题

• NetworkExtension 框架中的枚举 NEHotspotConfigurationError 更改回 NS_ENUM(从NS_ERROR_ENUM),和 Xcode 11.0 之前一样。

• 修复了在运行与 Swift 库静态链接的 watch 应用程序时发生的运行时崩溃。

Swift Packages

解决的问题

• 为 Swift 软件包自动生成的方案将在软件包添加或删除目标时自动更新。

SwiftUI

已知的问题

• Xcode 文档查看器中的 SwiftUI 教程中的某些可下载项目文件在下载过程中可能会失败。

解决方法:使用共享按钮打开 Web 链接,然后直接从教程的在线版本下载示例文件。

watchOS

解决的问题

• watchOS 应用程序可以使用 watchOS 6 SDK 以及 部署目标为 watchOS 5.3 来构建。