XCode9新特性

1,244 阅读9分钟

题外话

随着iOS 1011 的正式推送,新版开发工具Xcode9也相应的更新了。官网对新版XCode9对此一波牛B吹上天,就目前使用来说,还是很多bug的,比如一个.m实现文件中如果IBOutlet太多的话,那么修改和编码这个.m文件简直就是噩梦,动一下卡一分钟,甚至直接Crash。之前版本的Xcode还在继续使用的IBOutlet左边小圆点是实心,代表这个IBOutlet有与IB文件有连线,点击可以跳转到相应的IB文件中相应的控件处,现在打开IB文件才会有实心圆点,否则基本都是空心圆。使用中也遇到多次不明原因的Crash,不过这一版的很多功能还是相当贴心的,也很强大!等Apple更新吧。
这是一次公司内部技术分享会的内容,内容共分为三个部分:

  • Xcode9新特性
  • iOS 11 适配
  • iPhone X适配
    这是第一个部分,如有需要请持续关注。
    言归正传。

Xcode9新特性

Compatibility-兼容性

Xcode 9.0需要运行MacOS Sierra 10.12.4或更高版本的Mac。
想使用Xcode9,先升级Mac系统吧。

Simulator-模拟器

  1. 多个并发模拟器。同时运行多个模拟器。

     这个可以说是开发者调试程序的福音啊,以后就可以在不同系统,不同机型上同时进行对比,调试美滋滋~~~
  2. 从地图,照片和Safari与模拟器共享信息。
  3. 添加了关闭窗口或退出模拟器后运行模拟器的选项,以便与命令行工具的simctl命令更好地集成xcrun。
  4. 录制模拟器的视频。
  5. 通过选择帮助>模拟器帮助获取帮助。

Source Editing ( 源代码编辑器)

  1. 更快,更多功能查找和更换。

  2. 快速滚动任何大小的文件。

  3. 直接操纵代码结构,如令牌和块。

  4. 重新设计源代码管理的集成。

  5. 重新设计错误和警告消息的介绍。

  6. 支持Markdown。

    举个🌰: 下面一段代码,在使用QuickHelp功能时,呈现MarkDown书写的注释

     /**
         ### 这是一段注释 ###
         #### 使用markdown格式 ####
         * 参数1 double 类型
         * 参数2 double 类型
     */
         func sum (num1:Double,num2:Double) ->Double {
             return num1 + num2
         }
    
         let count = sum(num1: 1.0, num2: 2.0)

介绍这个功能,主要是觉得如果团队规范代码格式的话,书写着可以在写注释的时候更有帮助,让使用者能得到查看系统级别API的体验。

Debugging

  1. iOS和tvOS设备的网络调试。(需要手机与电脑在统一网络上)

      通过WiFi或有线网络调试iOS和tvOS设备。
      通过Bonjour连接或输入IP地址。
      第一次需要插入iOS设备才能启用网络调试。
  2. 主线程检查器。

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

重构

  1. 跨Swift,C,Objective-C和C ++文件的全局重命名。
  2. 重构。重构内置于编辑体验之中,并可跨Swift,Objective-C,Interface Builder和许多其他文件类型。
  3. 基于Swift4的兼容性,可以兼容构建Swift3
  4. 提供简单的fix-it 功能。
  5. 自动补全缺少的协议方法
  6. 补全缺少的方法实现
  7. 提取变量. 方法和表达式
  8. 自动生成switch语句的case

Xcode Server

新建在Xcode服务器。

在偏好配置中,配置Xcode服务器和BOT权限设置。
增加了双因素身份验证支持。
更新的机器人功能

支持自动和手动配置工作流。
传递额外的参数xcodebuild。
在设备和模拟器上并行运行测试。
为测试配置语言和区域。
发送“全部清除”电子邮件通知。

之前版本的Xcode也有类似的功能,但是需要单独下载Xcode Server程序来进行项目的集成。现在已经集成到Xcode9.

Project Modernization(项目现代化)

  1. 当您打开一个项目时,Xcode对其进行评估,以查看是否应更新任何设置。此功能提供了一个简单的方法来确保您的项目符合最新的SDK和最佳做法。

  2. 打开问题导航器以查看是否需要更新项目中的任何内容。您也可以在项目导航器中选择项目,然后选择编辑器>验证设置。

  3. 如果问题导航器列出了现代化问题,请单击该问题以查看一个对话框,以解释应该进行的更新,并允许您执行任何或所有更新。

  4. 单击执行更改后,无论是否选择进行所有更改,Xcode都不会再次显示警告。要重新运行检查,请在项目导航器中选择项目,然后选择编辑器>验证设置。

Instruments

用于在跟踪文档的图形区域中固定图形的新拆分视图。

添加了所有策略,并将策略选择器移动到跟踪文档顶部的新工具栏。

增强型金属调试仪。

金属系统跟踪VR支持查看事件,如合成器活动,姿势查询等

Interface Builder

    增加了对资产目录使用命名颜色的支持。
    增加了对新边距和基线视图约束的支持。
    添加了对自动布局安全区域指南的支持。
    增加了对全屏WatchOS应用程序的支持。

Metal 2 Support

  1. Capture API。

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

  1. GPU计数器。

分析有关特定GPU捕获的详细分析指标。在iOS和tvOS中,GPU计数器显示为命令编码器的时间线;在macOS中,GPU计数器显示为绘制或调度调用的时间线。

检查渲染或计算流水线阶段的运行时性能,例如顶点着色器,片段着色器,计算内核等。

比较每个流水线阶段花费的GPU时间量,以查找您的性能瓶颈。

  1. GPU备注。

在金属着色语言代码中查找优化机会。

在着色器编辑器中调试特定于设备的运行时问题。

遵循直接的解决方案和指示来改善您的代码。

  1. 智能过滤。

通过键入到调试导航器来查找特定的调试信息。当您键入和突出显示匹配的文本(例如资源,像素格式,功能名称,对象标签等)时,Xcode会动态显示建议。

通过从预定义的Metal对象菜单中选择选项来过滤搜索结果。

使用多个匹配条件的多个过滤器。

  1. VR支持。

查看VR提交和左眼/右眼提交的表面。

添加了纹理检查,用于检查渲染目标中各个像素的值,如颜色,alpha,深度等。

添加检查输出顶点属性到缓冲区编辑器。

添加数据提示支持金属对象,如纹理,缓冲区和采样器。

Source Control

新的源代码管理导航器,用于查看当前工作空间的分支,标签和远程存储库。

新的源代码管理检查器显示所选导航器项目的详细信息。

分支历史的新编辑器,包括一个方便导航的跳转杆。

文件差异的新的并行编辑器。

更容易和更快地访问常见任务。

GitHub帐户集成,轻松浏览和一键创建项目及相关的GitHub资源库。

Swift (新的Xcode 9 -Swift 4)

Swift 4和Swift 3,Swift 4和Swift 3目标的一个编译器可以在同一个项目中编译。

改进的迁移者体验,仅支持将选定目标迁移到Swift 4。

更快的通用代码和减少的代码大小。

Testing

并行测试装置

对XCTest添加了新的APIs

控制和捕捉截图。
团体测试活动。
测试附件。
在特有界面清理测试状态。
在一个UI测试中应用多个应用程序。
使用指定的语言和区域运行测试。

General(其他功能)

  1. 更新了使用plist文件定义文本宏的方式。

       为项目中的用户,项目或特定用户定义文本宏。
    
       自定义新的文件头。
    
       有关更多信息。
  2. 更新了索引引擎,包括在编译文件时编制索引的能力。

  3. 设备窗口被分成用于设备和模拟器的单独窗格。

Asset Catalogs

  1. 命名颜色支持。

  2. 添加了广泛的应用程序图标。

  3. 为App图标集添加了更大的iOS营销。

  4. 添加了保留图像矢量数据以选择动态类型缩放的选项。

  5. 增加了HEIF图像的支持。

Building and Linking

  1. 添加了一个在Swift中编写的新构建系统的预览。

  2. 提供更高的可靠性。

  3. 捕获许多项目配置问题。

  4. 提高整体构建系统性能。

  5. 注意,构建系统性能不包括构建系统使用的编译器,链接器和其他工具。

  6. 目前可选,并将成为未来版本的Xcode的默认值。

  7. 要选择项目或工作区的新构建系统,请选择“文件”>“项目设置”或“文件”>“工作区设置”,然后选择“构建系统”类型的“新建构建系统(预览)”。

  8. 有关与现有项目兼容性的说明,请参阅Xcode版本说明。

Capabilities

  1. iOS热点和多路径TCP的新配置。

  2. 新的网络配置,包括内容过滤,代理DNS查询以及代理TCP和UDP连接。

  3. 用于watchOS的新背景模式用于录音和转弯方向。

  4. tvOS背景提取的新模式。

Core ML( 核心ML编辑器)

  1. 为模型生成强类型接口。

  2. 用于设备使用的模型编译。

官网What's new in Xcode11