这一篇文章给你们介绍:Xcode 11 Beta 5,虽然是
beta版本
,可是在不久的未来必未来临,例如:SwiftUI + Combinepython
Xcode 11
包括用于iOS 13
、macOS Catalina 10.15
、watchOS 6
和tvOS 13
的sdk
。Xcode 11
支持iOS 8及以上版本
、tvOS 9及以上版本
、watchOS 2及以上版本
的设备上调试。Xcode 11
要求Mac
运行macOS Mojave 10.14.4或更高版本
。这是版本要求ios
Xcode 11 beta
支持SwiftUI注意:
SwiftUI
开发工具只能在macOS Catalina 10.15 beta版
上运行。c++
如今,您能够独立于系统外观设置更改Xcode的外观。(41165587)git
Xcode
支持使用 xcodebuild
或 xcrun altool
从Organizer window
或命令行上传应用程序。Xcode再也不包含Application Loader
。(29008875)github
如今,当启动嵌入在 Xcode
中的 Instruments
、模拟器和其余开发工具时,macOS
上的 LaunchServices
会考虑所选择的Xcode
。例如,当您在Finder
中双击一个Instruments trace
时,将启动所选Xcode
的Instruments
版本。从命令行中更改Xcode
和Xcode -select
一块儿使用的是哪一个Xcode
。(6757601)chrome
编辑器能够添加到任何窗口,而不须要助理编辑器。编辑器是使用跳转栏中的“Add Editor”
按钮或File > New > Editor command
添加的。如今,每一个编辑器均可以处于如下三种模式之一:“Editor Only”, “Editor and Assistant” 或 “Editor and Canvas”
。后两种模式在可用时自动显示相关内容。当使用多个编辑器时,View > Editor > Focus command
可用于临时展开活动编辑器,以填充整个窗口,隐藏其余编辑器。对于源代码控制支持,工具栏中的Code Review
按钮将替换Comparison Editor
。“Show Authors”
命令如今能够从Source Editor
的编辑器菜单中得到。SCM日志
如今位于检查器区域。(43806898)shell
Mac Catalyst
应用程序中使用SwiftUI
。所需的软件包安装程序再也不没必要要地出如今macOS 10.15
上。(51080815)编程
Foundation继承 Combine framework 如今能够了!可使用如下Foundation
和Grand Central Dispatch
与Combine
进行集成:keyvalueobserver
、NotificationCenter
、RunLoop
、OperationQueue
、Timer
、URLSession
、DispatchQueue
、JSONEncoder
、JSONDecoder
、PropertyListEncoder
、PropertyListDecoder
和@Published属性包装器。(51241500)canvas
当使用带有暗黑系统外观的浅色主题时,问题文本再也不是浅色的。(48230278)swift
Clang 如今提供了一种机制来控制退出时析构函数注册。您可使用 -fno-c++-static-destructors
标志全局禁用这些函数,或者应用属性[[clang::no_destroy]]
来禁用特定变量的析构函数。还添加了属性[[clang:::always_destroy]]
,以便在使用 -fno-c++-static-destructors
时启用特定变量的析构函数。(21734598)
做为扩展,全部语言模式如今都支持具备固定底层类型的c++ 11枚举。(43831380)
当使用在活跃 Standard version 中被弃用的标准库设施时,将发出弃用警告。(46881474)
堆栈检查在全部平台上都是默认打开的,以防止内存损坏。(25859140)
默认状况下,机器码outliner
在 -Oz
下是打开的。它经过跨函数标识相同的代码序列来减少代码大小。这些序列被封装在一个编译器生成(“outlined”)
的函数中。每一个原始代码序列都替换为对所述函数的调用。(46385499)
为了提升性能和安全性,静态连接器(ld)如今将标记为常量的全局变量移动到一个新的段中:__DATA_CONST
。这些全局变量可能由编译器生成的指针组成,动态连接器(dynamic linker, dyld)
须要在加载期间修复这些指针,可是其余方面是常量,好比vtables
和显式声明的常量指针。一旦dyld
完成加载映像,它就会使__DATA_CONST只读。这种更改不会影响行为良好的代码,可是可能会破坏依赖于未定义行为的代码,好比使用类型双关来编写声明为
const`的指针。(50898833)
static int value1 = 0; // Stored in __DATA
static int value2 = 0; // Stored in __DATA
const int * const valuePtr = &value1; // Stored in __DATA_CONST
// ERROR: Attempting to store a value to a constant pointer
(int *)valuePtr = &value2;
复制代码
release、autorelease、retain、alloc或allocWithZone
。(50253394)当 Xcode 将 if (@available(…))
连接到运行在 iOS 1三、macOS 10.1五、watchOS 6或tvOS 13 上的应用程序或框架中时,if (@available(…))
检查能够正常工做。(51109405)
删除 <experimental/optional>
和 <experimental/ variable >
标头。使用c++ 17
中的 < optional >和< variant >
来替代。(50175894) 解决了优化器循环不变代码运动传递中的长编译时问题。(39648918)
若是您按下 Command-U
或在 navigator
区域中选择一个 Localized assets,Xcode将再也不崩溃。(52211868)
修正了在使用 Interface Builder 的图像检查器时,若是资产目录包含一个符号和位图图像资产,而且它们具备相同的名称,则可能发生崩溃的问题。(51279661)
添加到资产目录的新用户定义图像将显示在图像视图图像组合框中(51090225,51120715)
修正了致使 Mac Catalyst 的 NSDataAsset 在运行时返回nil的问题。(50022757)
解决了一个问题,当一个资产具备为iPad 和 Mac Catalyst指定的变量时,会致使 NSDataAsset 查找返回错误的数据。(49990047,51278348,51288447)
若是测试是使用测试计划运行的,如今可使用测试计划的代码覆盖率设置来配置哪些目标应该包括在代码覆盖率结果中。(50502861)
Xcode 默认状况下使用响应文件将输入文件传递给Swift编译器。要关闭此行为,请将 USE_SWIFT_RESPONSE_FILE
设置为 NO
。
您能够在目标中使用无限数量的 Swift 文件。(35879960)
运行脚本阶段和自定义构建规则能够声明和发出依赖项文件,使用一些编译器和构建工具使用的 makefile
样式的 .d
格式输出。在肯定是否应该执行规则或阶段时,构建系统将检查列出的文件,以了解后续构建过程当中的更改。(49226986)
项目如今可使用定制的构建规则来处理头文件(APPLY_RULES_IN_COPY_HEADERS)
。(48185100)
自定义构建规则如今能够指定在执行期间使用的附加静态输入文件。使用SCRIPT_INPUT_FILE_#
环境变量为规则脚本提供这些已解析的输入文件路径。(49645853)
Xcode 从信息中删除了一些条目。若是条目不适合为其构建的平台,则在构建时使用产品的 plist
文件,这对于配置为为多个平台构建的目标很是有用。能够经过将构建设置 DISABLE_INFOPLIST_PLATFORM_PROCESSING
设置为 YES
来禁用此行为,在这种状况下,目标必须承担适当管理这些条目的责任。(47797497)
自定义构建规则如今能够声明它们应该在每一个体系结构中运行一次(默认状况下),或者在全部体系结构中只运行一次。这对于与体系结构无关的自定义规则很是有用,例如,代码生成工具生成的文件不会因体系结构而异。(47716990)
XCFramework 容许将适用于多个平台(包括iOS设备、iOS模拟器和Mac Catalyst) 的二进制框架或库打包到一个可分发的. XCFramework包中,开发人员能够在本身的应用程序中使用这个包。能够将.xcframework
包添加到Xcode
目标的连接库阶段,而且Xcode在构建时使用所包含框架或库的正确平台版本。使用xcodebuild -create-xcframework
命令行支持建立框架。捆绑在XCFramework
中的框架或库应该与发行版构建设置设置为 YES
的构建库一块儿构建。(49948269)
增量构建可能没法对项目的非源相关更改(如资源文件修改)进行正确的协同设计,这可能致使应用程序没法启动。(41254808) 解决方案 :在相同的目标中更改源文件以触发 codesign
流程,或者执行一个干净的构建。
为Mac Catalyst更新iOS应用程序可能会显示新的错误诊断,说明Mac
上没有某些框架或功能。若是其中一个诊断显示错误,能够经过将VALIDATE_WORKSPACE
构建设置设置为NO
来禁用它。(50607174)
新的构建系统不计算到用户主目录的构建设置路径中的前导波浪号(~)。(41339901) 解决方法:使用 $(HOME)
代替。
若是目标启用 RUN_CLANG_STATIC_ANALYZER
,那么单个文件处理命令(如Compile、Preprocess、Show Assembly
)将不能正确工做,由于它们生成静态分析器输出文件,而不是适当的输出。(43340227) 解决方法:在目标中禁用RUN_CLANG_STATIC_ANALYZER
。
若是应用程序承载的测试目标的构建(其中定义了TEST_HOST
)失败,那么后续的构建可能会在签署应用程序产品时失败,由于在应用程序的初始签名时,测试目标是不完整的,而且是未签名的。(43402096) 解决方法 :执行一个干净的构建。或者,从app target
的产品中手动删除未签名的测试包并从新构建。
覆盖iOS
架构和有效架构构建设置的目标可能须要删除或限制覆盖,以便正确地为Mac Catalyst
构建。(51074742)
当在macOS 10.15
上使用Xcode
时,一些文件——特别是.xib文件和storyboard文件——可能会被复制而不是编译,从而致使不正确的构建产品。(49351105) 解决方法:在正在复制的文件的文件检查器中,将类型弹出框从默认值切换到,而后返回默认值。这将重置项目文件中的文件类型为正确的类型,并使构建系统可以将其匹配到正确的工具来处理它。
当用户第一次构建时,可能会出现一个弹出窗口,说明SimulatorTrampoline
但愿访问桌面文件,由于运行在simulator
中的ibtool
须要访问这些文件来编译故事板。(51114450) 解决方案:容许在提示符中访问文件。
当使用 Xcode Server
中的测试计划在多个配置下运行测试时,集成报告如今能够正确地显示测试所运行的每一个配置的名称。(53402104)
若是更改活动测试计划文档在test navigator
是可见的,如添加或删除一个测试目标,或启用或禁用一个单独的测试或测试类——navigator
如今更新当即响应的变化而变得不一样步测试计划。(52065983)
若是修改了活动测试计划文档中的设置,而且随后调用test Again操做来从新运行上次运行的测试,那么修改后的设置如今将生效,而不是使用先前的设置。(51145300)
macOS
如今支持按需资源(ODR)。(50358184)
使用遗留的构建系统特性,如构建规则或脚本阶段发现的依赖文件、定制构建规则的输入声明,或APPLY_RULES_IN_COPY_HEADERS
构建设置,将生成一个错误,而不是无声地被忽略。(51318274)
在Watch
目标中,将架构构建设置覆盖为仅仅armv7k
并不会阻止部署到TestFlight
或Xcode
的企业分发工做流。(51104990)
索引器不会在索引Swift
响应文件以前等待执行构建。(52110336)
在关闭和从新打开一个项目以后,或者在使用xcodebuild
执行增量构建时,来自先前构建的关于不兼容框架、应用程序扩展和代码签名设置的诊断信息如今会在问题导航器和构建日志中显示。(51131884)
默认状况下,Xcode
的新构建系统不会检测做为shell脚本
构建阶段输入声明的目录中的更改。启用构建设置allow_recursive_script_input
会致使它这样作。可是,若是目录中的任何文件是由依赖于脚本阶段输出的任务生成的,则会发出
依赖循环错误,必须经过重组目标来解决。(41126633)
当构建一些使用随需应变资源的目标时,构建系统再也不崩溃。(49072702)
python3
和pip3
命令再也不错误地失败,再也不出现声称只安装命令行工具时须要Xcode
的错误。(53284703)
当使用macOS Catalina 10.15 beta 4
时,可使用默认的shell
路径使用pip3
。(50877974)
Python 3
在命令行工具包中可用。(51727440)
Xcode
的内置usdz_converter
工具已被弃用,将被删除。使用加强现实资源下的更新工具套件Augmented Reality。(52922369)
如今有一个复选框,使您可以区分string
属性的默认值是nil仍是空字符串。设置时,若是没有指定其余默认值,则默认值为空字符串。(26534406)
Xcode 11
数据模型文件格式再也不为实体或属性写出或保存已废弃的同步服务信息。(32524648)
Core Data
数据模型编辑器在使用Xcode 11
数据模型文件格式和适当的部署目标时,添加了对派生属性的支持。(45567066)
当使用Core Data
建立应用程序时,会出现一个新的复选框来启用CloudKit
对数据模型默认配置的支持。对于使用新的配置检查器的现有数据模型,也能够启用此功能。当数据模型配置支持CloudKit
时,数据模型编辑器执行额外的验证,以确保模型符合Core data CloudKit
支持的需求。(51126024)
与CloudKit
一块儿使用时,Core Data
模型中的属性必须是可选的,或者具备默认值。Xcode 11 beta 3
和更早版本错误地要求这样的属性是可选的,而且具备默认值。(51593507)
若是使用UUID
属性类型、URI
属性类型或持久性历史记录特性,在使用Xcode 9
中使用的格式以前的数据模型文件格式时,将正确地生成错误。(50188371)
Create ML
中提供了活动分类、表格分类和单词标记模板。
Create ML
中提供了对象检测和文本分类模板,加入了图像分类和声音分类模板。从macOS 10.15 beta 3
开始使用这些模板。(52009035)
您如今可使用声音分类预览直接从麦克风对声音进行分类。(52131594)
Live listen
在没有麦克风的设备上崩溃。(53405469)视图调试器如今在检查器中显示NSImage 实例的名称。(35516797)
用于调试视图层次结构的Size检查器中的图形筛选器标识所选视图上的哪些属性受到约束。在筛选器中选择属性将显示的约束缩小到与该属性匹配的约束。标准修饰符键(如Shift和Command
)可用于展开显示匹配这些属性的约束的组合的选择。(44864394)
如今能够调试watchOS
应用程序的视图层次结构。(45173634)
如今,您能够从设备和模拟器窗口模拟链接设备的网络条件和热状态。(44608479)
视图调试器在调试导航器和画布中显示UIWindowScene 实例。(45378799) 能够在scheme选项中禁用视图调试。(45928299)
用于调试视图层次结构的大小检查器有关于约束的更多细节,包括过滤器、编辑器中的悬停高亮显示和更好的描述。(16153188)
视图调试器支持调试Mac Catalyst
应用程序。(37507479)
视图调试器检查器显示 NSImageView 和 NSButton 的 contentTintColor 。(49506123) for
视图调试器如今显示iOS
命名的名称和系统颜色。(45162028)
视图调试器显示特征集合信息。(45161975)
视图调试器显示UIImage
实例的名称。(45327089)
视图调试器如今显示符号信息,如基线和中线。(49508874)
调试栏外观切换器支持在iOS
上在暗模式和亮模式之间切换。(45161907)
Scheme
编辑器的Diagnostics
选项卡中的“暂停问题”复选框被常规断点替换。可使用断点导航器建立运行时问题断点。(31409112)
使用环境覆盖(可从调试栏访问)覆盖已调试流程的外观、动态类型和可访问性选项等系统设置。(45848655)
调试器支持使用崩溃日志(。崩溃文件)。(48408310)
调试器能够调试tvOS
的顶层扩展。(48869701)
在安装或调试应用程序时,Xcode
更喜欢使用Wi-Fi链接手表。 断点的VoiceOver
操做菜单包含一个跳转到相应代码行的操做。(44941178)
在调试带有约束的视图时,双击size
检查器中的约束将在编辑器中选择该约束,并在检查器中显示约束的信息。(18842905)
在 watchOS 6
中,APNs请求头中须要一个APNs -push-type
键。为正在发送的通知类型指定警告或背景。Xcode
中的模板APNs
文件默认状况下不包含这个头文件。(50709418)
调试符号可能没法用于Apple Watch
。(26995636) 解决方案:验证您有一个工做的互联网链接,并在首选项>账户中登陆到您的苹果ID。
在watchOS
模拟器中调试手表应用程序可能会在模拟器首次启动时失败。(50263836) 解决方法:等待手表模拟器完成引导,而后再次开始调试。
App
和热状态跟踪的能量冲击仪可能会中止更新。(50968828) 解决方法:中止并从新运行应用程序。
修正了当在调试导航器中拖动进程项时,macOS 10.15上的Xcode
崩溃。(48453949)
您能够调试设备上的交互式预览。(51183159)
当使用运行当前beta
操做系统发行版的设备时,能量报告显示设备的热状态。(52349364)
调试可用于设备上的预览。(47668840,51139546)
Environment override
按钮出如今调试栏中,用于watchOS
和iOS
应用程序扩展目标,而不须要先暂停进程。(51203640)
预览调试会话再也不在预览不可见时结束。(50593619)
添加到正在运行的进程中的运行时问题断点行为正确。(49433870)
视图调试器中的项能够在上下文菜单的Debug
导航器中显示。(18598643)
在调试视图层次结构时改进了Swift
类名的格式。(39679411)
修正了调试控制台将显示页面列指南的问题。(49693398)
断点支持VoiceOver
命令来打开快捷菜单。 (44940944)
WatchKit
框架再也不包含在 iOS SDK
中。若是您正在使用来自iOS
的WatchKit api
,则须要删除此使用。WatchKit框架仍然能够在watchOS
上使用。若是您正在使用来自iOS的WatchKit api
来推断配对的Apple Watch
的功能可用性,那么在向Feedback Assistant. 提交反馈时,请包含关于您的用例的信息。(49707950)
为了与遗留软件兼容,macOS
中包含了Python、Ruby和Perl
等脚本语言运行时。在macOS
的将来版本中,脚本语言运行时在默认状况下不可用,可能须要安装一个附加包。若是您的软件依赖于脚本语言,建议您将运行时捆绑在应用程序中。
不推荐使用Python 2.7
。这个版本包含在macOS
中,以便与遗留软件兼容。macOS
的将来版本将不包括Python 2.7
。相反,建议您在终端中运行python3
。(51097165)
Quartz Composer
框架不受欢迎。从macOS 10.15
开始,Quartz Composer
框架将被标记为不同意使用,而且为了兼容性的目的仍然保留。若是您的应用程序使用的是Quartz Composer
,那么能够过渡到Core Image、SceneKit或Metal
等框架。(50911608)
命令行工具对Subversion
的支持——包括svn、git-svn
和相关命令——再也不由Xcode
提供。若是须要Subversion
或相关的命令行工具,能够经过运行xcode-select——install
来安装命令行工具包。(50266910)
当同时运行到多个目的地时,使用xcodebuild
进行测试可能会致使崩溃。(52962341) 解决方案:经过将 - Disable -concurrent-destination-test
标志传递给xcodebuild
来禁用并发目标测试。
使用xcodebuild
中的设备或模拟器名称指定运行目的地不能正确解析。(52081230) 解决方案:根据平台和 ID
而不是名称指定目的地。
在设备上构建并运行 watchOS应用程序
可能会无限期地显示系统转轮。(51726238) 解决方法:从新启动设备。
解决了一个问题,阻止运行一个手表应用程序与线程杀菌剂创建启用在旧版本的watchOS
。(49288795)
解决了在视网膜和非视网膜显示器之间切换致使的半点帧差别问题。(20175879)
DriverKit
驱动程序构建正确。(52858797)仪器中的轨迹如今能够在层次结构中造成。它们如今能够表示任何工程类型,并使用定制的工具建立。(28615789)
如今,Instruments
容许一次从表中复制多行。(39326522)
工具容许建立范围,以便在跟踪文档中更容易地导航。(49022012)
<os-signpost-point-schema>
在定制工具中可用来匹配来自os_signpost(_:dso:log:name:signpostID:)的点事件。(50586708)
watchOS应用程序
时,会启动一个 iOS模拟器
。(49788679)所选轨迹在仪器的触摸栏区域中呈现。(50186374)
在运行iOS、iPadOS、watchOS或tvOS
的设备上进行概要分析时,Instruments
对从其接收的os_log(:dso:log:::) 和 os_signpost(:dso:log:name:signpostID:)消息使用正确的类别。感兴趣的点如今能够正确地接收事件,而且自定义工具类别匹配的行为也正确。(52193505)
界面生成器支持ios13
UIVisualEffectView 模糊和动态视觉效果。(48023286)
界面生成器支持ios13
UIActivityIndicatorView样式。(48573772)
iOS家庭显示器的颜色如今适应于浅色和深色画布的外观。(48610782)
接口生成器支持自定义 UIButton 符号配置。(51323174)
界面生成器支持新的布局 TVCollectionViewFullScreenLayout 在苹果电视上。(47598895)
UIViewController 实例如今默认为自动模式表示模式。模态表示segue
能够覆盖此设置。(48129590)
界面生成器支持iOS
上的暗模式。(45314199)
Interface Builder
的设备栏可让你在iOS
应用程序的亮暗界面之间切换。(45282451)
您能够添加SwiftUI
宿主控制器,例如 UIHostingController,来将storyboard
控制器流链接到管理 SwiftUI
视图层次结构的宿主控制器。您能够在Interface Builder
中填充宿主控制器的内容,方法是提供一个经过编程设置控制器的rootView的自定义子类。(46039344)
你也可使用 Segue
动做设置 UIHostingController
或 NSHostingController 的根视图。
对象库如今匹配所选的系统范围外观。(50874168)
NSStackView 检查器如今容许配置负间距。(49012055)
NSSwitch 在 macOS 10.15
上运行时可用。(47566686)
UITableView 中的单元格如今能够经过画布中的自动布局约束视图自调整大小。若要为现有表视图选择行为,请在大小检查器中为表视图估计的项大小启用“自动”,并为单元格的高度启用“自动”。(35735970)
NSView 和UIView 在尺寸检查器中有一个布局模式选项,能够显式地选择“将自动调整蒙版转换为约束”。默认设置为 “Automatic”
,这是现有的行为。“自动”意味着当视图受 storyboard或.xib
文件中的约束影响时,“将自动调整蒙版转换为约束”将关闭,若是不受约束则打开。(37352354)
提升了“添加缺失约束”自动布局约束生成的可靠性。(43694622)
UIScrollView 的内容在画布中是可滚动的,一旦它的子视图被自动布局约束彻底约束。(44727961)
UICollectionView 中的单元格如今能够经过画布中的自动布局约束视图自调整大小。若要为现有集合视图选择行为,请在大小检查器中为集合视图的估计大小启用“自动”,并为单元格的大小启用“自动”. 若是部署在 iOS 13
以前,你能够激活自我分级集合视图细胞经过调用 performBatchUpdates(_:completion:) viewDidLoad()。(45617083)
在字体弹出窗口检查器中,家庭弹出窗口如今呈现菜单项做为适用字体的预览。(31484154)
如今能够在文档范围内对错位的帧执行更新帧,而不须要选择视图。(22076710)
UIScrollView
支持内容和框架布局指南,能够在Size检查器中启用它们,以便对可滚动内容进行更多控制。(29711618)
界面建设者支持新的苹果电视标签栏风格。(47598643)
新的 WKInterfaceTextField 接口元素可用于watchOS
。(45754186)
canvas
支持为 Mac Catalyst
应用程序定制界面。(37797710)
SF
符号在图像检查器属性中可用。(47532055)
UIImageView 检查器包括对配置符号的支持。(47797500)
使用带有新的 @IBSegueAction
属性注解的视图控制器方法,可使用带有任何所需值的自定义初始化器,在代码中建立 segue
的目标视图控制器。这使得在故事板中使用具备非可选初始化需求的视图控制器成为可能。在源视图控制器上建立从 segue到@IBSegueAction
方法的链接。在支持 Segue
操做的新OS版本上,将调用该方法,它返回的值将是传递给 prepare(for:sender:) 的 Segue
对象的destinationViewController
。能够在一个源视图控制器上定义多个 @IBSegueAction
方法,这能够减小在prepare(for:sender:)
中检查 segue
标识符字符串的须要。(47091566)
IBSegueAction
方法最多接受三个参数:编码器、发送器和segue
的标识符。须要第一个参数,若是须要,能够从方法的签名中省略其余参数。必须将 NSCoder 传递到目标视图控制器的初始化器,以确保它是用 storyboard
中配置的值定制的。该方法返回一个视图控制器,该视图控制器匹配故事板中定义的目标控制器类型,或nil
,以使用标准init(coder:)
方法初始化目标控制器。若是您知道不须要返回nil
,则返回类型能够是非可选的。
在Swift中,添加@IBSegueAction
属性:
@IBSegueAction
func makeDogController(coder: NSCoder, sender: Any?, segueIdentifier: String?) -> ViewController? {
PetController(
coder: coder,
petName: self.selectedPetName, type: .dog
)
}
复制代码
在Objective-C中,在返回类型前添加IBSegueAction:
- (IBSegueAction ViewController *)makeDogController:(NSCoder *)coder
sender:(id)sender
segueIdentifier:(NSString *)segueIdentifier
{
return [PetController initWithCoder:coder
petName:self.selectedPetName
type:@"dog"];
}
复制代码
当在设备栏中选择 Mac设备
查看 iPad 故事板
时,项目添加的自定义字体不会呈现。(48528374)
若是一个字形有光明模式和黑暗模式表示,黑暗模式表示将不会出如今故事板中。(50354204)
在 Interface Builder
中配置的 UIKit菜单
在macOS
上运行时可用,但在iOS上不可用。(51077651)
苹果电视故事板中的 ARView 对象会致使界面生成器渲染崩溃。(50971800)
iOS状态栏
不会显示在界面构建器画布中。(48639919)
包含用 Xcode 11
建立的菜单命令的视图控制器场景会致使应用程序在iOS 12上运行时崩溃。(50871098)
在Interface Builder
中,将对齐设置为“center”或“right”的UILabel , UITextField , UITextView 实例在为macOS设计或运行时对齐错误。(50062524) 解决方法:在 awakeFromNib() 中从新应用所需的对齐。
在 Xcode 11 beta版
以前使用 Xcode版本
建立的项目在 Xcode 11 beta版
中打开时保留默认的自定义颜色。(50828300)
使用 Xcode 11
建立的 iOS或tvOS模板
项目中的故事板和 .xib
文件如今能够在之前的 Xcode版本
中打开。(51230799)
使用 Xcode 11
建立的包含第四系填充颜色、第二系填充颜色、第三系填充颜色或系统填充颜色的故事板和 .xib文件
能够在较旧的 Xcode版本
上打开,而不会致使崩溃。(51233884,51236844)
修正了集合视图单元格自调整大小的布局问题,这些问题来自于故事板和 .xib文件
,当编译和部署到 iOS 12.4
及之后版本时(49537998)
解决了在查看 Mac Catalyst
应用程序的 storyboard
时,阻止界面构建器设备栏中的亮或暗界面样式组生效的问题。(50929581)
Xcode
在打开 .xib
文件或带有自定义视图的故事板文件时不会崩溃,若是该项目包含Swift
包,该视图被标记为IBDesignable
。(50551974)
拖出一个新的 iOS
主菜单再也不会致使崩溃,若是你在画布上拖动一个现有的菜单。(51237295)
解决了与打开故事板和 .xib文件
相关的性能退化问题。(51282755)
UIDatePicker 的检查器如今只显示适用于所选模式的属性。(26726319)
用于添加 iOS设备
的预览编辑器菜单如今与当前画布方向匹配。(48818470)
预览编辑器项如今保存配置的区域设置或伪区域设置。(48303753)
在接口生成器中配置为 Count Down的UIDatePicker
对象如今在运行时使用指定的持续时间。(23426425)
在不使用自动布局的文档中也能够看到Embed In bar
按钮。(46855203)
NSControl 的子类如今在库和文档大纲中有惟一的图标。(24231920)
修正了从库中拖动子视图控制器时背景颜色不正确的问题。(50388578)
库中的全部 UI控件
都正确切换到暗模式。(49830961)
Swift
代码,启用位码构建设置设置为 Yes
,在使用存档操做构建时正确连接。(52804818)LLDB
的 Python脚本
如今基于 Python 3
。若是您使用的 Python扩展
与 python3不兼容
,它们就会崩溃。为了帮助转换,您能够在 python2
模式下运行,方法是设置一个默认值:defaults write com.apple.dt.lldb DefaultPythonVersion 2
复制代码
Python 2
支持将在将来被移除。(47806994)
Swift
Decimal 值在 LLDB
中有一个数据格式化程序,使它们以可读的方式显示。(38983073)
LLDB
如今支持检查经过支持库演化而编译的 Swift
类型。(48018240)
在Swift代码中从新声明 self
能够与 LLDB
正常工做。(39611934)
当 PATH
中的 python二进制
文件不是系统二进制文件时,Swift REPL和LLDB
的
python
脚本能够正常工做。(40961425)
解决了在调试 XCTest 测试时阻止 LLDB
访问变量的多个问题。(41471338)
您如今能够在资产目录中本地化资产。在属性检查器中启用本地化。(12948139)
设置包如今包含在 Xcode
本地化目录中。(12495197)
genstring
的手册页提供了更详细的行为文档。(19709369)
genstrings
工具获得了加强,并与 extractLocStrings
工具合并。之前的版本已被弃用,已重命名为 ogenstring
,如今必须使用 xcrun
调用。应该将调用 xcrun extractlocstring
的任何脚本更改成使用 genstring
,可是目前提供了一个兼容符号连接来调用 genstring
。(19709395)
genstrings
工具如今接受一个 -encoding
参数,该参数容许指定输入文件的文件编码。(48224455)
更新版本的 genstring
改进了错误报告,而且能够在之前默认接受的场景中报告错误。例如,若是 MyApp
目录包含子目录,genstrings MyApp/*
将失败,由于 genstrings
文件参数必须是源文件。(48304658)
genstrings
工具如今可使用任意数量的 -s
参数来指定与 NSLocalizedString 相似的附加宏,或者用于提取字符串的函数。例如,genstrings -s MyErrorSring -s MyUIString myfile.swift
将 MyErrorString
和 MyUIString
都视为等同于NSLocalizedString
。(48734596)
请注意: 使用-s参数并不会禁止对
NSLocalizedString
或CFCopyLocalizedString
的支持。
本地化命令和 genstrings
工具的导出如今支持多行 Swift
和 Objective-C
字符串,而且在识别 NSLocalizedString
参数时放宽了空格要求。(50516442)
本地化命令的导出性能获得了很大的改进。(40548416)
本地化命令和 genstrings
工具的导出再也不在转义的高 Unicode
代码点 (好比\U0001F603)
上崩溃。(18898240)
导入包含内嵌换行的本地化字符串如今会生成带转义 \n序列
的字符串文件。(44649979)
Xcode
本地化导出生成的 XLIFF文件
如今将 xml:space="preserve"
添加到 <trans-unit />
元素中,以确保保留空白。(44928807)
Mac Catalyst
的 color asset
变量不会在运行时传递。(51113192)
Mac Catalyst
的 NSDataAsset
变量在运行时返回 nil
。(50022757)
在 Xcode 11 beta
版中不支持 SwiftUI live
视图和操场中的内联结果。(42226387)
工做区中的操场不能从 Swift
包导入目标。(47668990)
UIKit
中视图的快速查看和内联结果预览能够显示为空白矩形。(50787870)
操场的前几行再也不被卡在窗户下面。(47529397)
修正了在 macOS 10.15
上运行游乐场时,因为网速慢或不可靠而致使的延迟。(48995467)
若是代码引用主线程之外的视图,游乐场将再也不崩溃。(46579594)
Xcode
可使用 find
导航器在工做区或项目中找到资产。资产目录编辑器还支持查找和替换,您可使用 replace
重命名资产。(14279237)由先前发布的 Reality Composer
或 Xcode beta
版本建立的现实文件再也不受支持。(53180175) 解决方案:使用最新版本的 Reality Composer
或 Xcode
从新导出现实文件。
从 macOS
上的 Reality Composer
的内容库中添加的对象与 iOS和iPadOS
上的Reality Composer
的 build 1A68
不兼容。
若是在接口生成器中没有指定它的模块,则在运行时加载故事板时不会找到 RealityKit ARView 类。在 Xcode
控制台中显示如下错误消息:“Interface Builder文件中的未知类ARView”。”(50840767) 解决方案:ARView
是一个Swift
视图类,须要在接口构建器检查器中指定它的类名 (ARView)
和模块 (RealityKit)
。
若是在 Xcode
项目中没有使用 RealityKit
,则在运行时加载 storyboard
时不会找到 RealityKit
的 ARView
类。在Xcode控制台显示如下错误消息:“ Interface Builder
文件中的未知类 _TtC10RealityKit6ARView
。”(50900969) 解决方案:若是导入 RealityKit
并使用 ARView
类型定义 @IBOutlet
,但在项目中不要使用 RealityKit
符号,则会出现此问题。要确保 RealityKit
在运行时使用此配置加载,请手动将 RealityKit
添加到目标的 Link二进制文件
和库构建阶段。
改进了对导入的 USDZ
文件的支持。(49630946)
改进了对操做对象的支持。(50036512)
来自其余场景的通知触发器和通知操做将再也不出如今没有建立它们的场景中。(51008577)
由 Xcode
从一个 Reality Composer
项目自动生成的 . Reality
文件包含项目中的全部场景。(51048599,51868814)
RealityKit
在iOS模拟器中可用。(48603396)
当编辑使用SSH
进行身份验证的项目的bot
时,Xcode Server
可能会禁用一些特定于项目的设置。(51009722) 解决方案:在编辑bot时,要么替换 repository
选项卡中的 repository
,要么使用基于 http
的身份验证和 Xcode
服务器集成。
当从任何集成的上下文菜单建立机器人时,Xcode Server
均可能致使崩溃。(51082255) 解决方法:从服务器的上下文菜单或 Xcode
中的产品菜单建立机器人。
由多个目标构建的源文件中出现的构建问题能够在每次集成中标记为已解决并从新引入。(46523551)
Xcode Server
如今支持Mac Catalyst应用。(50602873)
Swift包始终出如今 Xcode Server bot
配置存储库窗格中。(50058808)
解决了Xcode Server
没法自动签署使用iCloud
、应用程序组、Apple Pay
或钱包功能的项目的问题。(41008156,44704694)
Xcode 11 beta 4
支持新的maccatalyst
。包标识符前缀。所以,Mac Catalyst
应用程序使用的配置文件必须从新生成,以反映新的前缀。若是使用自动签名,将自动生成一个新的配置配置文件。若是您正在使用手动签名,请登陆到开发人员账户并从新生成 Mac Catalyst
应用程序使用的配置文件。(52535178)
若是您正在使用之前的 Xcode 11 beta版
,而且已经为您的应用程序提供了配置文件,那么它将继续工做,直到您更新到 Xcode 11 beta 4
。若是您尚未为您的应用程序提供配置文件,您须要更新到 Xcode 11 beta 4
,以便生成一个具备正确应用程序ID前缀的配置文件。
若是代码包含对 bundle标识符
的引用,则须要更新这些引用。
签名和功能设置如今合并在项目编辑器中的新签名和功能选项卡中。新选项卡支持跨多个构建配置使用不一样的应用程序功能。新的功能库使搜索可用功能成为可能。(35254597)
Xcode 11
支持新的 Apple
开发和 Apple
分发证书类型。这些证书支持在任何苹果平台上构建、运行和分发应用程序。现有的iOS和macOS开发和分发证书将继续工做,可是,在 Xcode 11
中建立的新证书将使用新类型。之前版本的 Xcode
不支持这些证书。(45527608)
若是你的iPad应用程序使用了私有权限,那么 Mac Catalyst
应用程序可能没法使用这些权限。 解决方案:为 Mac Catalyst
应用程序生成一个新的受权文件,并按照如下步骤排除不可用的受权:
File > Duplicate
。Mac Catalyst
受权文件一个惟一的名称并保存它。3.重新的 Mac Catalyst
权限文件中删除任何不可用的私有权限。
Mac Catalyst
应用程序的构建设置,并找到代码签名权限构建设置。plus(+)
按钮添加条件设置。macOS
,而后编辑条件设置的值,以引用新的 Mac Catalyst
受权文件的名称。在建立开发证书时,自动签名可能会失败,并出现“出于安全缘由禁止此请求”的错误。(50964225) 解决方法:您的账户可能已经达到了证书限制。在Safari中查看您的 Apple Developer
账户,并撤销您没有使用的任何开发证书,而后在 Xcode
中再次尝试。
存档操做不会对Swift包中的命令行可执行产品进行代码签名。(48717735) 解决方法:在发布存档的可执行文件以前,使用 codesign
工具手动签署它们。
使用 bot
编辑器的 sign
选项卡手动安装的 Mac
配置文件将使用错误的文件扩展名安装,这会致使集成失败。(47636041) 解决方法:登陆到bot用户的账户,并在 ~/Library/MobileDevice/Provisioning profiles
目录中重命名受影响的概要文件。
修正了一个致使应用内购买内容包没法构建的代码签名问题。(50736776)
解决了 Xcode
在为 iOS Developer University
程序的成员建立新的签名证书时抛出错误的问题。(50640287)
解决了 Xcode
错误报告的一个问题:当上传到 App Store
时,“团队没有iTunes
链接访问”。(39292849)
模拟器能够根据当前电源自动选择 macOS GPU
。当你的 Mac
链接到 AC电源
时,使用的是 分立GPU
。当你的Mac使用电池供电时,使用的是集成GPU。您能够经过导航到 File > GPU
选择在模拟器中更改策略。(53032365)
simctl
如今能够覆盖 iOS设备
的状态栏值。例如,要设置时间和电池,请使用:
xcrun simctl status_bar <device> override --time "9:41" --batteryState charged --batteryLevel 100
复制代码
有关所有选项,请参见xcrun simctl help status_bar。(51697821)
当运行在 macOS 10.15
上时,Metal
能够在 iOS 13和tvOS 13模拟器
中使用。Metal
代码在主机 Mac GPU
上执行,比模拟的 OpenGL代码
要快得多。SceneKit api, CoreAnimation
和 其余系统框架抽象gpu
之间的许多差别,减小须要特定于设备的代码。当运行在早期版本的 macOS
上或在没有Metal
的环境中,模拟器将继续使用呈现的 OpenGL
软件。若是你的 Mac
有多个 GPU
,使用模拟器中的文件菜单来选择使用哪一个 GPU
。若是正在使用的 GPU
变得不可用,任何使用它的模拟器都会自动关闭。(18430676)
默认状况下,Xcode
再也不建立全部可用的 iOS模拟器设备
。而是建立一组最经常使用的设备。要建立其余设备(或一个设备的多个实例),请打开设备窗口,选择模拟器,单击+按钮,输入一个名称,并选择相关的设备类型和OS版本。(49428617)
CAMetalLayer
能够在 iOS 13和tvOS 13模拟器
中使用。(45101325)
iOS 1三、watchOS 6和tvOS 13模拟器
如今都有一个 dyld共享缓存
。这改进了模拟器的启动时间,减小了模拟器进程使用的打开文件句柄的数量。若是您报告了一个您认为与共享缓存相关的问题,请包括一个 simctl诊断
和使用 DYLD_PRINT_LIBRARIES=1
启动程序的输出。(13632739)
simctl
如今接受运行时名称的简短别名。这意味着你能够用像 simctl create 'iPhone X' iOS13
这样的命令建立一个新的iPhone X模拟器。(41089607)
对于 headless
和 continuous integration
场景,您能够配置 CoreSimulator
,经过设置默认的 write com.apple
来跳过虚拟帧缓冲区中的合成操做。CoreSimulator FramebufferServerRendererPolicy to none
。在这种模式下,没法查看模拟器,simctl io
也没法截屏或录制视频。(48264341)
没有 CFBundleVersion
的包是无效的,不能正确地安装在设备或模拟器上。 CoreSimulator
如今能够在流程的早期检查和拒绝这些包,并提供更清晰的错误消息。(49892531)
模拟器停靠图标如今包括一个菜单,以快速启动模拟器。(43067512)
模拟器的文件菜单如今包括一个 GPU
选择菜单,以控制哪一个 GPU
是使用金属支持模拟器和合成模拟器的虚拟帧缓冲区。若是在选中可用项时使用外部 GPU
,则在外部GPU链接后启动的任何模拟器都使用外部 GPU
。若是外部 GPU
断开链接,任何使用它的模拟器都会自动关闭。对这些设置的更改仅在模拟器启动时生效。当这个设置被改变时,模拟器已经启动,继续使用以前选择的 GPU
,直到它们从新启动。(46134036)
游戏控制器输入在iOS模拟器中可用。(50082777)
GPU
在一个系统匹配选择的GPU策略。只使用MTLCopyAllDevices()
返回的第一个匹配的GPU。(50608554) 解决方案:经过将模拟器窗口定位在与模拟器使用的 GPU
直接链接的显示器上,您可能会看到更高的性能,这避免了跨 GPU复制
。请注意:与任何利用
GPU
的应用程序同样,外部链接显示的性能行为也会随着工做负载的不一样而变化。
经过 xcrun simctl io <UDID> recordVideo
对 iOS 1三、tvOS 13和watchOS 6
模拟器进行视频录制,将返回一个错误而不是录制视频。(50625716)
watchOS模拟器
不支持冷启动上的断点。(51148192) 解决方法:在启动正在调试的应用程序以前,彻底启动模拟器。
自动纸板同步功能如今正确的全部模拟器运行 iOS 11.1
和更新。(53231481) 在模拟器中获取粘贴板后当即调用 Send Pasteboard
将再也不致使设备不可用。(52866417)
修正了用 simctl
覆盖细胞栏的能力。(51698044)
模拟器中的旋转设备自动选项与 iOS 13模拟器兼容
。(51147050)
当模拟器不是 macOS Catalina 10.15
上的前台应用程序时,模拟器将游戏控制器事件交付给模拟设备。(51759699)
修正了一个致使模拟器中止向屏幕显示帧更新的问题。(51993678)
模拟器正确地显示了注册时的 Touch ID > Enrolled
的复选标记。(50553667)
主机和模拟设备之间的纸板自动同步的行为是正确的。(46686100)
Safari
对模拟器的共享行为正确。(49331693,49416352)
解决了 IOSurface实例
在 macOS 10.14.5及更早版本模拟器
进程中的泄漏问题。(50880827)
iCloud同步
能够在iOS模拟器中使用。(50924245)
当TVOut被配置为“断开链接”时,iOS 13模拟器
没有链接模拟显示。(50829453)
iOS模拟器
的颜色匹配金属的内容,以显示的颜色空间。(50625671)
解决了一个使用 Metal
的核心图像着色器没法在ios13模拟器上运行的问题,并禁用了错误的 “Metal DAG编译器”
。”(51521248)
游戏控制器与 iPad模拟器
能够正常工做。(51034639)
解决了在 iOS 13以前运行iOS版本的模拟器
设备没法正确呈现显示的问题。(50963987)
IOSurface
如今能够在 ios1三、watchOS 6和tvOS 13模拟器
中运行。(11051639)
模拟器中播放音频的应用程序也再也不自动打开麦克风输入。(32406954)
将删除 simctl
列表 JSON
输出中之前不推荐的可用性字段。使用 isAvailable Boolean
字段肯定可用性。(45142676)
ATSC
纹理格式支持透明地解压他们在 CPU
上,而后再上传到 macOS GPU
。(51347811)
如今您能够从一个分支到另外一个分支进行更改。(18285039)
克隆新存储库时,如今能够从可用分支列表中选择要签出的分支。(41122122)
使用新的源代码控制文件检查器,您能够浏览当前分支文件的完整历史记录。日志检查器适用于全部文件类型,包括接口构建器文档。(45109443)
如今,您能够从源代码控制导航器中隐藏更改和管理隐藏。此外,Xcode还提供自动保存和恢复源代码控制操做的更改,好比从存储库中提取更改。(8797804)
源代码控制做者如今能够在每一个编辑器的基础上使用。(45108927)
当在已启用rebase的分支上执行 Pull in Xcode
时,工做表不会自动关闭。(50377240)
若是文件已重命名,则从源代码控制日志检查器中查看文件修订的更改可能会失败。(49673170)
对于位桶云或位桶服务器托管的账户,不支持在 Add Package assistant
中过滤包。(47290085)
GitLab或GitLab
自管理托管账户不支持在 Add Package assistant
中过滤包。(47290125)
当使用xcodebuild时,解析包可能没法验证 SSH指纹
,除非指纹已经在~/.ssh / known_hosts
文件中。(50686014) 解决方案:在使用 xcodebuild
以前,经过 SSH
到主机并从命令行验证指纹,或者手动将主机指纹添加到 ~/.ssh / known_hosts
文件中。
改进了在项目导航器中选择 Package.swift
文件时显示源代码控制信息的功能。(50696823)
若是做者信息还没有在 Preferences > Source Control
控制中为Git配置,则使用rebase进行提取将再也不失败。(48680076)
解决了托管账户提供者(如GitHub 和 BitBucket
)在添加账户表中不可用,而且之前添加的账户将被禁用的问题。(47645098)
解决 Xcode
中的源代码控制操做出现“没法与助手应用程序通讯”对话框的问题。(47227781)
修复了我的、组织和星型存储库加载时间较长的性能问题。(48620126)
解决了添加GitHub
账户后,来自 GitHub
的用户头像并不老是加载的问题。(48698029)
修正了代码评审编辑器中某些源编辑器菜单选项不可用的错误。(48774008)
语义突出显示、代码完成、实时问题、符号搜索和跳转到定义如今都支持 Metal
着色语言。(45144204)
经过单击源代码控制更改栏并选择显示或隐藏更改,介绍了在源代码编辑器中查看内联代码差别的功能。(49073551)
增长新的高对比度(暗)主题和高对比度(光)主题。还为标记、类型声明和其余声明添加了新设置。(50036007)
为 Swift文件
中的声明添加了专用的语法着色,能够在类型声明和其余声明下的首选项>字体和颜色中自定义。 宣言着色 C-family
语言不支持。(10342935)
Xcode
的源代码编辑器如今支持拼写检查。(32062963)
Xcode 11
的源代码编辑器引入了该文件的一个迷你映射。这个迷你地图包括Mark:的可读文本,高亮显示的带有错误和警告的行,源代码控制更改,断点,以及高亮显示的 Find results
。迷你地图在默认状况下是启用的,而且能够在每一个编辑器中关闭。(35939517)
在文档注释和游乐场标记中为标记添加语法高亮显示。您能够在文档标记下的首选项>字体和颜色中自定义散文字体,并在首选项>文本编辑>显示中自定义分隔符外观。(42941263)
Toggle
注释支持多个游标。(44319433)
拖放文本时,行与行之间会留出空间,以便更容易地看到文本将被拖放到何处。拖拽完整行时,Xcode
只容许在其余行之间拖放。(44735912)
编辑器容许分层代码折叠。(47502128)
代码折叠支持方括号和圆括号。(50460404)
// MARK: comments和#pragma MARK
指令如今在编辑器中画一条分隔线。显示标记分隔符的首选项位于首选项>文本编辑>显示>显示标记分隔符。(7299224)
NSProgressIndicator 对象如今保存构建和运行时在检查器中配置的当前值。(43257511)
c++操做符重载
显示在跳转栏中。(50841460)
解决了Xcode在运行时使用键盘快捷键错误打开助理编辑器的问题。(37995114)
为 // MARK: comments和#pragma
标记指令添加了专用的语法着色,您能够在首选项>字体和颜色>标记中定制它们。(22114159)
您能够命令单击Swift操做符来使用 Quick Help
并跳转到 Definition
。(32695862)
解决了在Objective-C中编辑未关闭块时可能发生的问题。(48201424)
解决了代码完成将废弃符号排序在非废弃符号以前的问题。(38422586)
解决了删除文本时代码完成行出现空的问题。(48621410)
解决了在使用 throw
或 noexcept
子句时没有正确解析 c++函数
的问题。(37682611)
在输入时,可访问性缩放焦点如今跟随源编辑器中的插入点。(32775118)
当在源编辑器中逐行移动时,VoiceOver
不会重复上一行。(34334763)
VoiceOver
在源编辑器中有用于方法、错误、警告、断点和标记的转子,这使得搜索和移动到与错误或其余转子项对应的代码行很是容易。(34493080)
VoiceOver
文本属性如今包括源编辑器中一行代码的空格数、制表符数、缩进级别和行号。(34607795)
当读入源编辑器时,VoiceOver
再也不围绕占位符标记说额外的字符,并说它们是占位符。(44941610)
解决了 c++原始字符串
没有正确突出显示的问题。(10770485)
解决了 c++类声明
在使用限定名、模板或多重继承时没法正确解析的问题。(11286215)
解决了在跳转栏中没有显示嵌套在函数或方法中的本地类的问题。(13337638)
解决了 c++ 11
后置返回类型不能正确识别的问题。(13634062)
解决了 c++
类型枚举没有正确解析的问题。(13693443)
改进了使用可用性宏和属性的声明的解析。(14569168)
解决了不识别带单引号的 c++
数字文字的问题。(18121031)
解决告终构体成员函数没有正确解析的问题。(27946356)
解决了在跳转栏中没有正确显示枚举声明的问题。(32518576)
改进了 JavaScript
中类和函数的识别。(42537831)
解决了返回枚举类型的函数没有正确解析的问题。(46164630)
解决了无符号和长整数文字语法颜色不正确的问题。(47138177)
更新 JavaScript
语法高亮显示,包括 ECMAScript 6
关键字。(47354463)
修正了双击 c++析构函数
名会致使
静态分析器检查 mach
服务器例程中是否违反了 MIG
调用约定。这些违反行为可能会致使使用后免费的漏洞。(35380337)
静态分析器检查是否违反了 IOKit和libkern
引用计数规则。(46357478)
静态分析器检查是否违反了 DriverKit
引用计数规则。这些违规行为可能致使泄漏和无偿使用后的问题。(50349513)
结构和枚举的 @frozen属性
如今可用。(36597490)
结构的成员式初始化器如今为包含默认表达式的变量提供默认值。(SE-0242, 47130624)
struct Dog {
var name = "Generic dog name"
var age = 0
// The synthesized memberwise initializer
init(name: String = "Generic dog name", age: Int = 0)
}
let sparky = Dog(name: "Sparky") // Dog(name: "Sparky", age: 0)
复制代码
@autoclosure参数
。(SR-2688, 50560849)class Foo {
typealias FooClosure = () -> String
func fooFunction(closure: @autoclosure FooClosure) {}
}
复制代码
class MyClass: NSObject {
@objc func clone() -> Self { return self }
}
复制代码
键路径表达式如今能够包含对元组元素的引用。(50562288)
接受Any类型值的单参数函数再也不优先于其余函数。(50562333)
如今已经彻底实现了元组类型之间的转换。在此以前,下面将诊断一个错误。(SR-2672, 12340004)
let values: (Int, Int) = (10, 15)
let converted: (Int?, Any) = values
复制代码
// Declare a type with a static subscript:
enum ProcessEnvironment {
static subscript(name: String) -> String? {
get { getenv(name) }
set { setenv(name, to: newValue) }
}
}
// Use it with any of these syntaxes:
ProcessEnvironment["PATH"]! += ":/usr/local/bin"
ProcessEnvironment["PATH"]! += ":/usr/local/bin"
someVarOfProcessEnvironmentDotType["PATH"]! += ":/usr/local/bin"
复制代码
类型下标还能够与动态成员查找一块儿使用,以建立动态类型属性。
// Declare a type with a static subscript:
@dynamicMemberLookup
enum ProcessEnvironment {
// …As above…
static subscript(dynamicMember name: String) -> String? {
get { self[name] }
set { self[name] = newValue }
}
}
// Now you can use property syntax with ProcessEnvironment:
ProcessEnvironment.PATH! += ":/usr/local/bin"
ProcessEnvironment.self.PATH! += ":/usr/local/bin"
someVarOfProcessEnvironmentDotType.PATH! += ":/usr/local/bin"
复制代码
none
大小写的枚举进行比较,或将此类枚举与 Optional
进行比较。如今没有一个会发出警告。这样的表达式会产生歧义,由于编译器会选择可选的。none
超过您本身的枚举定义的 none
用例。(SR-2176, 26126801)enum Foo { case none }
// Assigned Optional.none instead of Foo.none.
let foo: Foo? = .none
// Comparing with Optional.none instead of Foo.none.
let isEqual = foo == .none
复制代码
编译器会提供一个警告,并提供一个修复程序来用 Optional替换.none
。没有或 Foo
。没有人能解决这种含糊不清的问题。
func makeACollection() -> some Collection {
return [1, 2, 3]
}
复制代码
调用该函数的代码可使用协议的接口,但不能看到底层类型。(SE-0244, 40538331)
enum Foo { case zero, one }
let foo: Foo? = .zero
switch foo {
case .zero: break
case .one: break
case .none: break
}
复制代码
@dynamicMemberLookup
属性如今支持键入键路径实现。(SE-0252, 49069813)struct Point {
var x, y: Int
}
@dynamicMemberLookup
struct Box<T> {
var v: T
init(_ v: T) {
self.v = v
}
subscript<U>(dynamicMember member: KeyPath<T, U>) -> U {
get { return v[keyPath: member] }
}
}
var box = Box(Point(x: 0, y: 0))
_ = box.x
复制代码
struct Box<Value> {
func transform1() -> Self { return self }
func transform2() -> Box<Value> { return self }
}
复制代码
在类中,Self
和前面同样是 Self
值的动态类型。声明类型中对Self的现有限制仍然适用;也就是说,Self
只能做为方法的返回类型出现。然而,Self如今能够在方法体中无限制地使用。(SE-0068, 17892696)
Array 和 ContiguousArray 如今都有 init(unsafeUninitializedCapacity:initializingWith:) 初始化器,它提供对数组未初始化存储的访问。(21880692)
实现了更完全的检查,以肯定转义闭包的限制,这些闭包捕获的 in-out
参数或 noescape
类型的值。虽然大多数代码不受影响,但在某些状况下,Swift 5.0
编译器接受的代码违反了这些限制。(SR-8546, SR-9043, 43355341)
Swift 5.0
编译器错误接受无效代码的一个例子是 @escaping
闭包,它调用一个本地函数,该函数从外部范围引用 in-out
参数:
struct BadCaptureExample {
var escapingClosure: () -> ()
mutating func takesInOut(_ x: inout Int) {
func localFunction() {
x += 1
}
escapingClosure = { localFunction() }
}
}
复制代码
localFunction()
捕获x是无效的来正确诊断上面的代码,由于 localFunction()
是从 @ escape
闭包引用的。func takesNoEscape(_ fn: () -> ()) {
func localFunction() {
fn()
}
{ localFunction() }()
}
复制代码
再也不容许重复元组元素标签,由于这会致使不正确的行为。(SR-8974, 45218256) 如下内容如今被诊断为错误:
let dupLabels: (foo: Int, foo: Int) = (foo: 1, foo: 2)
enum Foo {
case bar(x: Int, x: Int)
}
let f: Foo = .bar(x: 0, x: 1)
复制代码
只要内部标签不一样,在声明函数和下标时仍然可使用重复标签。例如:
func foo(bar x: Int, bar y: Int) {}
subscript(a x: Int, a y: Int) -> Int {}
复制代码
带有不透明返回类型的声明须要在iOS 1三、macOS 10.1五、watchOS 6或tvOS 13中使用Swift 5.1运行时,由Swift编译器强制执行。(50731151)
在macOS 10.9以前废弃的API在编译时只须要应用程序扩展安全的API构建设置就会正确地显示为不可用。(51417764)
从终端启动时,Swift REPL工做正常。(51374106)
若是类型使用不透明的返回类型来知足协议的关联类型要求,而且关联类型在另外一个泛型声明中按名称引用,则编译器再也不崩溃。(50509030)
静态库如今老是在连接期间所有强制加载,以修复与请求失败相关的运行时错误。(47598583)
弱的和无主的存储特性再也不抑制自动合成的 Equatable 或者 Hashable。(sr - 9827, 50566123)
若是崩溃日志中的符号没有正确解调,运行quick -demangle命令并传入崩溃日志的内容。(34920390)
在没有为 OTHER_SWIFT_FLAGS
设置 -DDEBUG
设置的项目中定义的预览提供程序,若是在画布中没有显示调试,则将其封装在#中。这发生在Objective-C
应用中,Objective-C
从未指定 OTHER_SWIFT_FLAGS
。(51138834) 解决方法:从 PreviewProvider
声明周围删除 #if DEBUG和#endif
。
使用 Xcode 11 beta 5
,预览只在 macOS Catalina 10.15 beta 5
上可用,并且只有 Xcode 11 beta 5
支持在 macOS Catalina 10.15 beta 5
上预览。(52059562)
软件键盘不会出如今预览中。(35615536)
使用与系统类型相同的名称命名类型可能致使预览失败。(51531683) 解决方法:不要对您的类型使用与系统类型相同的名称。
在运行设备预览时进行的代码更改可能会在应用程序从新启动时短暂显示主屏幕。(48208765)
在实时预览中没法缩放。(51183125) 解决方法:退出活动模式或使用画布或编辑器菜单中的缩放控件。
iOS、tvOS和watchOS
的静态预览不支持 SceneKit、MapKit和Metal视图
,在呈现更新时会出现延迟。(50965310)
若是现有视图位于视图生成器中条件语句的顶层,则致使容器插入现有视图和容器中的新同级的拖放操做将不起做用。例如,不能在 Text 周围删除 HStack 或者 VStack。(50300406):
var body: some View {
VStack {
if true {
Text("Hello World")
}
}
}
复制代码
解决方法:将现有视图嵌入到容器中——不管是在画布中仍是在源编辑器中——而后将新视图放入容器中。
包中的预览老是执行活动方案的完整构建。(51030302)
将 Text 修饰符拖放到画布中已经具备 View 修饰符(例如 frame(width:height:alignment:) 的文本上,将致使编译错误。(50712235) 解决方法:从新排序修饰符,使特定于文本的修饰符出如今任何视图修饰符以前。
HStack 和 VStack检查器不支持自定义布局指南。(49710501) 解决方法:使用 source editor
做为自定义布局指南。
属性检查器不容许指定灵活的帧。(51310989)
第一次在画布中进入实时预览模式可能须要几秒钟。(46505269)
在文件之间切换时,预览可能会失败或更新不正确。(50841287) 解决方法:在活动文件的末尾添加新行,而后单击出现的横幅中的 Resume
。
属性检查器在画布关闭后仍然可见,停留在最后选定的项上,而且不起做用。(50958316) 解决方法:从新打开画布或切换到其余文件。
预览不适用于启用了应用沙箱的 macOS应用程序
。(51088926)
对于符合 PreviewProvider 的私有和文件私有结构,预览不会出如今画布中。(47011316) 解决方法:从符合要求的类型中删除私有或文件私有访问控制。
第一次在运行目标选择器中切换设备时,预览可能须要几秒钟更新。(47562171)
在从 Scheme
弹出菜单切换使用运行目标的设备时,预览可能会暂时显示不正确的设备 chrome
。(49496647)
画布不支持焦点。(50275735)
在画布中没法撤消。(49651153) 解决方法:将源编辑器放在焦点位置,并在那里执行撤消操做。
解决问题
预览检查器使用系统字体呈现。(52473187)
修正了当你试图在你的 Mac
电脑上显示多个设备的预览时可能发生的崩溃。
修正了检查包含 SwiftUI
视图的视图层次结构时可能发生的崩溃。(52857304)
修正了启用或禁用实时预览时可能发生的崩溃。(52083572)
解决了 Apple Watch
预览在黑色背景上显示黑色文本的问题。(51676439)
预览继续工做后,更改文件名,而不须要切换到另外一个文件和切换回来。(51708183)
预览尊重导入周围的条件编译块。例如,您能够有条件地导入由 #if canImport(UIKit)
保护的 UIKit
。(51545182)
应用于类型和方法的可用性属性受到预览的尊重。当部署目标不包括 SwiftUI
(即部署目标在 iOS 1三、macOS 10.1五、watchOS 6或tvOS 13以前
)时,您如今可使用 UIViewRepresentable 实例和 UIViewControllerRepresentable 实例来查看视图和视图控制器的预览。为此,将适当的可用性属性添加到视图可表示类型和 PreviewProvider 一致性中,如 @available(ios13.0, *)
。(51493428)
命名颜色在属性检查器中是可编辑的。(51287606)
使用 withAnimation(::) 来更改根视图中的状态,能够在实时预览中正确显示。(51164838)
动画在live预览中保持在它们的上下文中,live预览与设备上的预览匹配。(50708417)
解决了在运行目的地选择器中选择与Apple Watch配对的设备时,watchOS
预览没法工做的问题。(50861269)
修正了在颜色检查器中反复选择指定颜色时可能发生的崩溃。(51304163)
当运行在 Apple Watch Series 3
上时,使用SwiftUI构建的应用程序再也不表现得像运行在 Apple Watch Series 4
上同样。(50678109)
Xcode 11 beta 5
中包含的 sdk
,使用 Path 结构可能会致使应用程序崩溃。所以,您可能没法成功地遵循 Drawing Paths and Shapes 教程中的步骤。(53523206)没有显式的命令行选项来使用 xcodebuild
构建 Swift包
。(45575820) 解决方法:运行xcodebuild -workspace
。在包含 Package.swift
文件的目录中。
独立软件包不支持预览。(51072409)
Swift
包不支持在目标中添加资源文件——好比图像、故事板或音频。(SR-2866, 33389529)
Swift
包不支持处理本地化的字符串文件。(48190792)
在项目中移动本地包将把它转换为文件夹引用。(50320585)
链接到 app
及其测试目标的打包产品会产生重复的符号。(50348625) 解决方法:只在应用程序或测试目标中连接包产品。
为Swift包自动生成的方案在包添加或删除目标时不会自动更新。(50586754) 解决方案:从包目录中的 swiftpm/xcode/xcshareddata/xcscheme
目录中删除该方案,而后从新打开包,自动生成一个新方案。
若是在方案中选择的构建配置未命名为 Debug或Release
,则使用调试条件设置的 Swift
包构建的目标。(50696202)
从工做区中删除本地包引用将从工做区中的全部 Xcode
目标中删除其包产品,即便对该本地包的其余引用仍然保留在工做区中。(50706448) **解决方案*8:将包产品引用添加回相关目标。
不支持预览 Swift
包中的代码,这些代码没有被活动方案引用,也没有被连接到应用程序目标,而且显示错误消息。(50909384)
新建立的 Swift
包的测试目标没法为 watchOS
构建,由于 XCTest
在 watchOS
上不可用。(51054894) 解决方法:用条件编译语句包围 watchOS
测试目标中引用 XCTest
框架或其api的任何代码。例如:
#if !os(watchOS)
// XCTest code
#endif
复制代码
在没有搜索结果时,在 Add package Dependency
工做表中搜索包存储库。(51223367)
不管在package . Swift
清单文件中声明的目标的名称与该目标的目录名在大小写上不一样,代码补全都适用于 Swift包目标
。(49648458)
在 Swift包的c族
目标中添加新文件不会建立扩展名为 . Swift的文件
。(31395814)
使用 unsafeFlags
构建设置的Swift包不能做为依赖项使用。(50354068)
当使用 Swift包
管理器构建 Swift包
测试时,XCTUnwrap API
是可用的。(51115369)
若是本地包覆盖了项目中的远程包,而且本地包具备没法知足的包依赖关系,那么 Xcode
将再也不崩溃。(51183216)
支持编写与SwiftUI视图交互的XCTest UI测试。(35224680)
测试计划是一种管理哪些测试运行以及这些测试如何运行的新方法。方案能够引用多个测试计划,并为自动化定义一个默认的测试计划。一个新的测试计划编辑器支持定义测试配置,它能够从计划自己继承共享设置。在Xcode中运行测试如今能够跨全部测试配置运行测试。更新源编辑器测试菱形以支持在单个配置中运行测试,并更新测试导航器以容许选择活动测试计划。更新测试报告以支持显示测试计划生成的结果。(16138582)
XCTest使用新的度量(度量:options:block:)方法和相关方法加强了性能测试功能。metrics参数须要符合XCTMetric协议的对象列表。您能够实现本身的自定义度量,或者使用 XCTClockMetric , XCTOSSignpostMetric , XCTCPUMetric , XCTMemoryMetric , 和 XCTStorageMetric。(49430032) 下面显示了一个示例性能测试测量的 CPU
和内存影响排序列表:
func testExample() {
// Measures the CPU and memory impact of sorting the input list.
measure(metrics: [XCTCPUMetric(), XCTMemoryMetric()]) {
sortedList = qsort(list: self.fiftyNumbersFrom0to100)
}
}
复制代码
XCTUnwrap
,用于 Swift测试
。XCTUnwrap
断言可选变量的值不是nil,若是断言成功,则返回其值。这消除了将 XCTAssertNotNil(::file:line:) 与展开值或处理测试其他部分的条件连接相结合的须要。例如:func testFirstNameNotEmpty() throws {
let forenames: [String] = customer.forenames
let firstName = try XCTUnwrap(forenames.first)
XCTAssertFalse(firstName.isEmpty)
}
复制代码
XCTUnwrap
是一个抛出断言,最好在抛出测试方法中使用,如上例所示。(30667432)
xccov
如今还支持直接传递结果包。例如,要查看结果包中的覆盖率报告,能够调用 xccov
,以下所示: xccov视图——report /path/to/result_bundle.xcresult
。(50500789)*结果包的格式在 Xcode 11
中更改。结果包是 Xcode 11
使用 xcresult
文件扩展名生成的资产,该扩展名包含有关构建、测试、代码覆盖率等信息。使用 Xcode 10
或更早版本生成的任何 xcresult
文件都不能被Xcode 11读取。经过传递 -resultBundlePath ./Example
能够生成一个结果包。将 xcresult
转换为xcodebuild
调用和示例。而后能够在 Xcode
中打开 xcresult
。Xcode 还在派生数据中建立结果包。当前的结果包版本号是3,能够经过传递
xcodebuild标志-resultBundleVersion 3来指定。版本3是
Xcode 11中的缺省版本,可是仍然建议自动化显式地传递该标志,以便未来任何可能成为缺省版本的版本都不会对现有工具形成问题。可使用
xcresulttool检查结果包。可使用
xcrun xcresulttool get——format JSON——path ./Example导出结果包根对象的
JSON表示。能够经过添加标记
——id REF. xcresulttool来导出
xcresult和任何由
JSON输出中找到的引用标识的嵌套对象。
xcresulttool还使用xcrun xcresulttool formatDescription` 提供其格式的描述。(41633595)
若是一个测试在多个目标上运行,而且其中一些目标(而不是其余目标)失败,那么测试报告将显示一个摘要,描述测试失败的目标,例如“在运行 iOS 12.0
的 iPad
目标上失败”。(49164968)
当经过源编辑器测试菱形运行测试或测试类时,选择单击菱形将显示一个弹出窗口,该弹出窗口容许在活动测试计划中的特定配置下运行测试(若是测试计划具备多个配置)。(46348663)
当查看在多个目标上运行的测试的测试报告时(例如 Xcode
服务器集成,或者 xcodebuild
调用使用多个目标说明符生成的结果包),如今能够根据目标过滤显示的结果。单击范围栏中的 devices
按钮将显示运行测试的目标列表,包括仅隐藏或显示感兴趣的目标的功能。此外,如今能够经过范围栏中的“混合”按钮过滤到仅在一个目标上失败但在另外一个目标上成功的测试。(48981032)
xcodebuild
生成的结果包如今能够在Xcode中直接共享、双击和打开。(38620469)
介绍了对 Mac Catalyst
应用程序编写基于 xctest
测试的支持。(41530313)
默认状况下,为新建立的测试计划启用了代码覆盖率。(48749597)
在 macOS
的 UI
测试中,鼠标移动(包括对 hover API
的调用以及对 click、scroll
和其余 API
的调用)将在屏幕上逐步移动光标,就像用户在实际交互中所作的那样,而不是当即将光标移动到最终位置。这可能会给严重依赖鼠标悬停行为的UI测试带来问题。(49430331)
为测试计划修改 .xctestrun
文件格式,以包含关于如何在计划中执行每一个测试配置的信息。当运行 xcodebuild build-for-testing
计划使用测试计划,生成 .xctestrun
文件使用 FormatVersion 2
和有一个修改后的属性列表结构。.xctestrun
文件生成的计划,不要使用测试计划继续使用 FormatVersion 1和xcodebuild test-without-building
接受要么版本。(46346053)
测试计划编辑器中的代码覆盖率设置不支持选择用于收集代码覆盖率的单个目标。若是测试计划是经过将一个计划转换为使用测试计划来建立的,而且该计划在转换时选择了单独的代码覆盖率目标,那么这些目标将保留在最终的测试计划中,可是不能在计划中编辑。(50502861)
xcodebuild
加强了支持测试计划的新选项。使用 new -showTestPlans
选项列出与方案关联的全部测试计划。使用新的 -testPlan <name>
选项指定与用于测试或构建测试的方案相关联的测试计划。若是没有指定 -testPlan <name>
, xcodebuild
测试将使用方案的默认测试计划。(46346197)
Xcode 11
引入了在 Xcode
本地化目录中自动包含来自 XCTest
的屏幕截图的选项。在测试计划或 scheme
编辑器中启用本地化截图,而后在导出本地化时检查“包含截图”。(28656175)
XCTUnwrap API
只在主要测试包目标中可用,而在其余库或框架中不可用。(51117167) 解决方案:将任何使用XCTUnwrap的库代码移动到您的主测试包目标,或者在受影响的目标中手动修改如下构建设置:SYSTEM_FRAMEWORK_SEARCH_PATHS = "$(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks"
LIBRARY_SEARCH_PATHS = "$(inherited) $(PLATFORM_DIR)/Developer/usr/lib"
SWIFT_INCLUDE_PATHS = "$(inherited) $(PLATFORM_DIR)/Developer/usr/lib"
复制代码
Address Sanitizer
和保护 Malloc
,或者Address Sanitizer
和 Thread Sanitizer
。(49739613) *解决方案 :不要将销毁者和不兼容的内存诊断设置组合在一块儿配置测试计划。若是测试计划的共享设置在测试配置中继承了不兼容的设置,则手动覆盖该设置,以禁用受影响的测试配置。Xcode
中的结构化构建日志,以及独立的结果包,再次显示了每一个步骤的持续时间。(48126238)
修正了一个阻止UI测试运行器发出任意网络请求的问题。(52856418)
修正了一个问题,该问题阻止启动UI测试目标,该目标的名称包含一个连字符,后面直接跟一个数字。(51857798)
编辑引用与包含活动方案的项目不一样的项目中的测试目标的测试计划,将再也不致使这些测试目标被标记为缺失。(50148373)
您能够在包解析期间在包含 Swift包
的工做区中运行测试。(48719922)
在正确启用代码覆盖率的状况下运行测试,将在模拟器和 Mac
上生成 iOS应用程序
的覆盖率报告。
修正了 Mac上iPad
应用程序 UI测试
的一个问题,当试图与表格视图单元内的元素交互时,可能会出现hit测试错误而失败。(50745246)
一个方案的测试操做中的并行执行复选框如今对 Swift包
的测试目标启用了。(47564543)
解决了启动测试操做时检查设备可用性时可能发生的崩溃。(51245770)
解决了在模拟器中没法为 Mac Catalyst
应用程序或 iOS应用程序
生成代码覆盖率报告的问题。(51241460)
XCUIElement 上的 exists 属性如今在XCTest没法检查应用程序UI的状况下(例如,因为应用程序的主线程没有响应)产生测试失败,而不是在这些状况下返回false。(37359653)
单元测试发现机制对于大型项目更有效。从新打开项目后,测试导航器的填充速度更快。(32567980)
tvOS 12.3或更早版本的TestFlight应用程序
分发到 Apple TV 4K
上,适用于部署目标在 tvOS 13以前的tvOS应用程序
。(53017497)这一篇 Xcode 11 Beta 5 翻译 官方文档
长夜漫漫,独自一人翻译。若有纰漏敬请原谅(同时还望指出,及时更改,以惠后人)
。内容更新角度是空前的,我相信正式版来临必将震撼整个互联网行业!经过如今 Xcode 11 出现以后的 SwiftUI + Combine 就知道!身处互联这个利益的漩涡之中,咱们惟一能作的就是与时俱进就问此时此刻还有谁?45度仰望天空,该死!我这无处安放的魅力!