一文读懂Xcode 9 所有更新:全新模拟器,兼容Swift低版本等

代码重构功能增强

这次 Xcode 9 对代码重构功能有较大的提升,首先是重命名功能,在编辑器中点击类名,然后选择 Refactor -> Rename:

这时,重命名的预览界面会直接显示在编辑器中:

从图中可以看到,ViewController 类所有引用它的地方,所在的文件位置,都直接铺在了代码编辑器里面,只需要滚动编辑框,就可以很轻松的看到这次重构影响的所有地方,非常方便。

Rename 这个功能说起来是很常用的一项,我自己就经常使用。可惜 Xcode 前几个版本对 Swift 支持不好,在开发 Swift 项目时只好手动来做 Rename,这次终于算是解决了,并且还提供了更好的体验。

另外,这次 Xcode 9 还解决了重命名在 Swift 语言中的一个老问题,就是:

常用 Swift 的同学应该都知道这个,以前版本的 Xcode 不支持 Swift 语言的重命名操作。 等了好几个 Xcode 版本, 这次终于是支持了。

新的 Xcode 还提供了快捷菜单,按住 Cmd 键, 再点击相应的变量或者类名,就会弹出快捷菜单:

快捷菜单中,提供了诸如重命名,转到定义,快速提示这些操作。

Swift 低版本兼容

XCode 9 使用 Swift 4 编译器。 这次新的编译器同时可以支持 Swift 3, 这样就不用立即修改项目的 Swift 代码了。 前几个版本的 Xcode 升级后,都会带来 Swift 编译器的升级,而之前的升级都是不做向下兼容的,必须把整个项目的代码都修改一遍。

可以在项目设置中选择当前 target 使用的 Swift 版本:

Main Thread Checker

顾名思义, Xcode 9 的调试器现在可以检测 UI 操作是否在主线程中了。 以往开发中的一个常遇到的问题,就是在非主线程操作 UI 元素。 现在 Xcode 9 在调试 APP 的时候会自动附带 Main Thread Checker, 一旦遇到这类问题,就会在控制台中报告给开发者,就像这样:

2017-09-2723:47:23.042830+0800VisionSample[8361:2640850][reports]MainThreadChecker: UIAPIcalledonabackgroundthread: -[UIView setAlpha:]

同时,在代码编辑器中,也会高亮显示相应的代码行:

以往这种在非主线程操作 UI 的问题很难发现,而且我相信这类问题是大家都会常常遇到的。 在 Xcode 9 中,这个老大难问题也有了更好的解决方案。

文件操作改进

现在你在 Xcode 中拖动文件时,会相应的改变文件系统了。 我们都知道,Xcode 左边栏中黄色的小文件夹叫做 Group:

在以前的 Xcode 版本中, 直接在这里面移动文件是不会影响文件系统位置的,比如把 ViewController.swift 文件移动到 group1 中,不会影响它在文件系统中的位置。

所以以前在移动文件的时候,我们需要先在文件系统中把文件移动一遍,也许当初 Xcode 设计 group 的初衷是为了把逻辑分组和文件系统分开。

深度集成 Github

Xcode 以前的版本也包含了版本控制的集成,这次更是对 Github 这个最流行的 Git 托管平台做了定制化的集成。 在 Xcode 的 Preference -> Account 设置菜单里面, 现在可以绑定你的 Github 账号:

绑定成功后,你可以在 Xcode 9 新增的源代码导航视图中看到项目的完整记录:

点击 Source Control 的 Clone 菜单项,可以看到你的 Github 账号中所有的内容:

在这个界面的下方,还可以看到这个工程的 Star,Fork 数量,以及 README 文件。 只需要点击右下角的 Clone 按钮,即可把项目从 Github 中复制下来。

在导航视图中,我们还可以看到每一个 commit 的细节:

你还可以点击 View on Github 选项,跳转到这个项目的 Github 页面上。 在这个页面上,如果是 Xcode 工程,还会看到 Open in Xcode 按钮:

点击这个按钮,你就可以直接在本地的 Xcode 打开这个项目, 后台的 Clone 操作完全透明了。 从这里可以看出,Xcode 对 Github 的深度集成是双向的,一定是一个用了心思做的产品。

模拟器升级

Xcode 9 对模拟器的改进也可以算的上是近几年最大的一次。 首先,模拟器的外观做了很大的更新,更加拟物化,并且,可以多个模拟器同时运行,方便多屏幕调试,比如 UI 先关的工作。 这点大家之前应该也都了解了。

下面是多个模拟器同时运行的截图:

全新的构建系统

Xcode 9 这次提供了一个全新的构建系统。 这个构建系统完全使用 Swift 语言写成,基于 Apple 的 llbuild 引擎。

新的构建系统默认是不开启的,你可以到 File -> Project Settings... 中打开项目设置中找到:

现在还是 Preview 版本,Xcode 后面的版本会把它作为默认构建系统,感兴趣的同学也可以尝试一下。

总结

总体来说,Xcode 9 的这次升级相比以前的版本,算是一个步伐很大的更新。 全新的模拟器,Wifi 调试,新的构建系统,对 Swift 更加完善的支持,等等这些,都算是一次质的飞跃。 这里给大家列出的也只是这次 Xcode 更新的一部分。 完整的内容大家还可以参看这里:https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/Whats

原文发布于微信公众号 - BestSDK(bestsdk)

原文发表时间:2017-09-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吴裕超

JavaScript 函数节流和函数去抖应用场景辨析

函数节流和去抖的出现场景,一般都伴随着客户端 DOM 的事件监听。举个例子,实现一个原生的拖拽功能(不能用 H5 Drag&Drop API),需要一路监听 m...

33370
来自专栏地方网络工作室的专栏

Python3 初学实践案例(7)tkinter 入门 GUI 的密码生成程序

Python3 初学实践案例(7)tkinter 入门 GUI 的密码生成程序 前面我已经非常好的完成了 cli 的密码生成程序的编写 http://blog....

33680
来自专栏编程

Python2下载单张图片和爬取网页图片

昨天用Python2爬取了一首歌的热评和评论总数,今天用Python2来下载图片。 一、需求分析 1、知道图片的url地址,将图片下载到本地。 2、知道网页地址...

30490
来自专栏PHP在线

表单提交刷新页面问题

今天开发中遇到了一个问题,刚开始没有头绪,不知道怎样解决,后来静下来一想,搜索下吧,经过搜索相关资料,很好的解决。 <form name="keywordFor...

40260
来自专栏程序员互动联盟

【编程入门】互联网的本质技术

首先要知道网站访问大概是什么个过程: 假设你在浏览器地址栏输入这个问题的地址 http://www.zhihu.com/question/22689579 访问...

487110
来自专栏韩东吉的Unity杂货铺

零基础入门 3: 窗口介绍(一)

前两篇介绍了Unity的环境布置,破解,平台切换。如果哪里有所遗忘可以翻看历史消息重新巩固下。

14330
来自专栏iOS Developer

微信小程序开发教程-从零开始(2)

20960
来自专栏腾讯Bugly的专栏

【特斯拉组件】iOS高性能PageController

1.组件介绍 Page是企鹅FM研发的分页组件,包括支持分页非交互切换(通过方法调用导航切换)和交互切换(屏幕的手势滑动),多个分页Controller和Vie...

55750
来自专栏coding for love

浏览器为契机贯穿前端知识点-大纲参考

ps:动画不连贯,因为浏览器渲染有一个最小时间间隔(这块之前搜藏了) 涉及如下部分:

9210
来自专栏前端之路

–[New]Vue项目使用vw实现移动端适配教程

23930

扫码关注云+社区

领取腾讯云代金券