Xcode 9 新变化

Beta

Posted by Asingers Blog on August 8, 2017

New 一个新工程跑起来看一下,最先看到的变化就是模拟器了。是的,没错,至少看起来更像是真的设备,而且也加入了物理按键。
并且支持同时开启多个模拟器,这个在开发调试中再方便不过了。同时还支持无限调试,但是需要iOS11,后期再续。想信Apple 也发现了这个问题,为什么换设备调试必须断开当前设备?

Highlights of Xcode 9:

  • 全新编辑。快速,基于结构的编辑器,可让您智能地突出显示和浏览代码。包括伟大的Markdown支持。
  • 重构。重构内置于编辑体验之中,并可跨Swift,Objective-C,Interface Builder和许多其他文件类型。
  • 超快速搜索 “查找”导航器会立即返回结果。
  • 调试。通过网络无线调试iOS和tvOS设备,Metal的新调试器以及Xcode中的更多功能。
  • 源控制。所有新的源代码管理导航器和集成的支持GitHub帐户可以快速浏览资源库并将您的存储库推向云端。
  • Xcode服务器内置。连续集成机器人可以在任何具有Xcode 9的Mac上运行,无需安装macOS Server。
  • 新游乐场模板。包括iOS模板,旨在在iPad中的Xcode和Swift Playground中运行良好。

  • 新建系统。Xcode新的构建系统的选择性预览提供了更高的可靠性和性能。

General:

  • 更新了使用plist文件定义文本宏的方式。
  • 为项目中的用户,项目或特定用户定义文本宏。
  • 自定义新的文件头。有关更多信息,请参阅Xcode帮助中的自定义文件头。
  • 更新了索引引擎,包括在编译文件时编制索引的能力。
  • 设备窗口被分成用于设备和模拟器的单独窗格。

Asset Catalogs:

  • 命名颜色支持。
  • 添加了广泛的应用程序图标。
  • 为App图标集添加了更大的iOS营销。
  • 添加了保留图像矢量数据以选择动态类型缩放的选项。
  • 增加了HEIF图像的支持。

Building and Linking:

  • 添加了一个在Swift中编写的新构建系统的预览。
  • 提供更高的可靠性
  • 捕获许多项目配置问题。
  • 提高整体构建系统性能。注意,构建系统性能不包括构建系统使用的编译器,链接器和其他工具。

  • 目前可选,并将成为未来版本的Xcode的默认值。
  • 要选择项目或工作区的新构建系统,请选择“文件”>“项目设置”或“文件”>“工作区设置”,然后选择“构建系统”类型的“新建构建系统(预览)”。

Capabilities:

  • iOS热点和多路径TCP的新配置。
  • 新的网络配置,包括内容过滤,代理DNS查询以及代理TCP和UDP连接。
  • 用于watchOS的新背景模式用于录音和 turn-by-turn。
  • tvos背景提取的新模式。 Core ML:

  • 新的Xcode 9 - 核心ML编辑器。
  • 为模型生成强类型接口。
  • 用于设备使用的模型编译。

Debugging:

Xcode 9中的新功能 - iOS和tvOS设备的网络调试。

  • 通过WiFi或有线网络调试iOS和tvOS设备。
  • 通过Bonjour连接或输入IP地址。
  • 需要插入iOS设备才能启用网络调试。 新的Xcode 9 - GPU帧捕获和GPU覆盖。
  • 查看命令缓冲区,附件,资源和调用堆栈。
  • 修改着色器并将更改保存到您的应用程序。
  • 移动序列的时间轴。
  • 检查和修改附件中各个像素的值,包括颜色值,alpha,深度等。
  • 通过最小化纹理带宽,最小化渲染像素的数量,禁用混合阶段,仅显示线框,以及缩放镶嵌的数量,来实现渲染状态而不修改代码。

Xcode 9中的新功能 - Undefined Behavior Sanitizer。

  • 使用Undefined Behavior Sanitizer来查找程序崩溃的源,意外的行为以及与未来版本的Xcode的不兼容性。
  • 检测C语言中的几种类型的未定义的行为,如整数溢出,无效的转换和对齐违规。
  • 在方案编辑器的“诊断”窗格中启用未定义的行为消毒剂。
    Xcode 9中的新功能 - 主线程检查器。

  • 检测未在主线程上进行的AppKit,UIKit和WebKit方法调用。
  • 在调试期间自动启用,并且可以在方案编辑器的“诊断”选项卡中禁用。
  • 主线程检查器与Swift和C语言一起使用。
  • 通过深度过滤来增强Breakpoint导航器。
  • 添加了修改断点的可视指示符。
  • 扩展视图调试器以显示视图控制器,并使用SceneKit和SpriteKit视图。
  • 增强iOS电能标准。

Documentation:

  • 新的统一浏览器,集成了参考,示例代码和文章。
  • 改进文档搜索。
  • 用于在页面之间导航的新跳转栏。
  • 集成示例代码下载。

Instruments:

  • 用于在跟踪文档的图形区域中固定图形的新拆分视图。
  • 添加了所有策略,并将策略选择器移动到跟踪文档顶部的新工具栏。
  • 增强Metal调试。
  • Metal system trace VR支持查看事件,如合成器活动,姿势查询等

Interface Builder:

  • 增加了asset catalog 使用命名颜色的支持。
  • 增加了对新边距和基线视图约束的支持。
  • 增加了对汽车布局安全区导则的支持。
  • 增加了对全屏WatchOS应用程序的支持。

Metal 2支持:

Xcode 9中的新功能 - Capture API。

  • 在你的代码中定义明确的捕获边界。
  • 使用新MTLCaptureManager类和新MTLCaptureScope协议来编程设置,管理和触发捕获边界。
  • 使用扩展的Xcode GPU Capture UI手动启动和停止捕获。您还可以使用Xcode来捕获应用程序中定义的API边界。

Xcode 9中的新功能 - GPU计数器。

  • 分析有关特定GPU捕获的详细分析指标。在iOS和tvOS中,GPU计数器显示为命令编码器的时间线; 在macOS中,GPU计数器显示为绘制或调度调用的时间线。 检查渲染或计算流水线阶段的运行时性能,例如顶点着色器,片段着色器,计算内核等。
  • 比较每个流水线阶段花费的GPU时间量,以查找您的性能瓶颈。

Xcode 9中的新功能 - GPU备注。

  • 在Metal着色语言代码中查找优化机会。
  • 在着色器编辑器中调试特定于设备的运行时问题。
  • 遵循直接的解决方案和指示来改善您的代码。

Xcode 9中的新功能 - 智能过滤。

  • 通过键入到调试导航器来查找特定的调试信息。当您键入和突出显示匹配的文本(例如资源,像素格式,功能名称,对象标签等)时,Xcode会动态显示建议。 通过从预定义的Metal对象菜单中选择选项来过滤搜索结果。
  • 使用多个匹配条件的多个过滤器。

新的Xcode 9 - VR支持。

  • 查看VR提交和左眼/右眼提交的表面。
  • 添加了纹理检查,用于检查渲染目标中各个像素的值,如颜色,alpha,深度等。
  • 添加检查输出顶点属性到缓冲区编辑器。
  • 添加数据提示支持Metal对象,如纹理,缓冲区和采样器。

Refactoring:

  • 跨Swift,C,Objective-C和C ++文件的全局重命名。
  • 查看所有更改在一个地方。
  • 转换Swift和Objective-C格式之间的方法签名。
  • 根据需要更新属性,getter,setter和合成的iVars。
  • 一个按钮更改。
  • 修复 - 它会自动填充switch语句中的缺失情况,并且一键单击协议一致的强制性方法。
  • 提取所有支持的语言的方法功能,以及其他语言特定的本地重构。

模拟器:

  • 同时运行多个模拟器。
  • 并行运行更多测试。
  • 测试同步和其他多设备工作流程。
  • 适用于iOS和watchOS模拟器的新Chrome包括硬件控件,并允许轻松拖动和调整模拟设备的大小。
  • 从地图,照片和Safari与模拟器共享信息。
  • 添加了关闭窗口或退出模拟器后运行模拟器的选项,以便与命令行工具的simctl命令更好地集成xcrun。
  • 录制模拟器的视频。

Source Control:

  • 新的源代码管理导航器,用于查看当前工作空间的分支,标签和远程存储库。
  • 新的源代码管理检查器显示所选导航器项目的详细信息。
  • 分支历史的新编辑器,包括一个方便导航的跳转杆。
  • 文件差异的新的并行编辑器。
  • 更容易和更快地访问常见任务。
  • GitHub帐户集成,轻松浏览和一键创建项目及相关的GitHub资源库。

Source Editing:

  • 更快,更多功能查找和更换。
  • 快速滚动任何大小的文件。
  • 直接操纵代码结构,如tokens和blocks。
  • 重新设计源代码管理的集成。
  • 重新设计错误和警告消息的介绍。
  • 支持Markdown。

Swift:

  • Swift 4和Swift 3,Swift 4和Swift 3目标的一个编译器可以在同一个项目中编译。
  • 改进的迁移者体验,仅支持将选定目标迁移到Swift 4。
  • 更快的通用代码和减少的代码大小。