今天更新了
Xcode 11
感觉很不错(主要很多陌生的东西,但是很有意思)!这里跟大家一起分享一下!前面翻译过一篇官方文档: 但是大家纷纷反馈看不懂,其实大家更希望看到就是一些带着更新去操作的东西。趁着最新更新正是版本的 Xcode 11 于是就有这一篇 Xcode 11 初体验
Xcode工作流的改进(Workflows)
工程创建
- 创建工程进来,就会发现
User Interface
可以进行选择SwiftUI
、storyboad
其中我有两篇博客也介绍到了SwiftUI
: SwiftUI - 百行代码变十行,Swift再创辉煌 和 WWDC - SwiftUI - 初恋般的感觉
代码块
- 代码块也做了调整,界面漂亮直观、编辑显示也非常清晰! (本人是非常喜欢代码块的,对于这个调整我要点赞)
- 将
Version Editor
中的log
选项卡移到了检查器中,组成了新的Source Control History
区。 - 将
Assistant
、和Vesion Editor
下的Autor
选项卡合并为一项,并从主导航中移除,向下移到每个编辑面板中,组成Editor Option
。主导航中只保留Code Review
功能。 - 新增
Add Editor
、MiniMap
。
我们这里着重介绍一下 Editor Options
、Add Editor
、MiniMap
这3个选项。
Editor Options
- 通过Editor Options可以设置当前编辑器的显示模式,包含:
Editor Only
,Editor and Canvas
,Editor and Assistant
这三个编辑选项。 -
Editor Only
:只显示代码编辑器。 -
Editor and Canvas
:代码编辑器和SwiftUI
预览视图。 -
Editor and Assistant
:代码编辑器和辅助视图。
其中说明一下:SwiftUI 预览 系统最低要求macOS 10.15
Add Editor
提供了编辑窗口的任意切割功能:
- 可以指定文件打开的位置。
- 使用
Focus Mode
专注使用某一个窗口。 - 综合这个功能还是不错的,我经常也会打开多个页面!来回进去出来麻烦!
直接点击这个按钮,会横向进行分割。 按住 Option
按键点击它,会纵向分割, 下图是一个分割后的界面示例
上图中界面被分成了 3 个编辑窗口。 左边被上下分割成了两个小窗口,右边被单独分割出一个大窗口。
指定文件打开位置
上面我们介绍了窗口分割,在 Xcode 11
中,你还可以按住 Option + Shift
,然后在左边点击要打开的文件,这时会出现窗口选择提示
你可以用键盘,或者鼠标任意方式选择你要打开这个文件的窗口,选中后点击鼠标左键或者键盘的 Enter
键,就可以在指定窗口打开这个文件了。除此之外你还可以移动鼠标到两个窗口之间,将要打开的文件在这里插入一个新的窗口:
综合这个功能,更加方便我们对比阅读,快速开发!尤其在一些关联性比较强的几个页面,我们就不再需要切来切去,更加方便清晰
MiniMap
MiniMap
是本次更新的特色(吐槽有点模仿)提供这个缩略小图,当然能够让开发者更加清晰,这个功能还是非常不错的!~~~大局观 😄😄
并且你可以通过 MiniMap
快速的跳转到文件的任何区域。MiniMap
支持代码标记, 断点显示,以及搜索高亮提示,非常多的便捷功能。
比如下图, 我们搜索 app
这个关键字,右边的MiniMap
上会标记处代码文件中所有命中的搜索, 并且还会高亮展示出当前命中搜索的位置(这个需要仔细看一下)
从上面的截图想必你也应该感受到这个 MiniMap
的作用了!
编辑器功能增强
代码注释的补齐功能。
现在可以直接点击函数方法,右键选择 Add Documentation
会自动补齐代码注释,简洁方便。看来苹果爸爸也实在受不了我们乱七八糟没有注释的代码,提倡我们文明编程 😃😄
Change Bar
-
Change Bar
这个功能之前也有,我还是比较喜欢的! 当你的项目关联了版本控制工具时,比如Git
,Xcode
会检测出当前文件哪些地方相对于上次递交的版本有更改,并且会通过在左边显示一个蓝色线条标记出来:
-
Change Bar
点击左键还可以选择show Change
查看我们变化之前的代码,其实也是对比变化的功能,当然你可以选择Discard Change
来删除变化更新!这就比较爽了!可能你这个时候你就会想到前面跟你介绍的Code Review
功能 是来对比整个文件变化!
Swift Package Manager
Xcode 11
还有另外一个重要的更新,就是对 Swift Package Manager
的内置集成。这个功能貌似在挑战 CocoaPods
! 为什么这么说呢?我下面给大家开始演示
- 打开项目文件,然后找到
Swift Packages
选项卡:
- 点击添加要导入的第三方框架,这里以
RxSwift
为🌰
- 点击
Next
会执行验证,稍等片刻就会让你选择版本以及分支!
- 选择完毕点击
Next
就会开始导入!Resolving 三方框架
设计工具(Design Tools)
- 可以随时查看各设备上的效果以及作出更改。
- 在开发和调试时,随时在暗黑和明亮模式之间进行切换。
- Asset目录可以使你轻松的控制图像和颜色在暗黑和明亮模式之间进行切换。
- 可以方便的使用浏览所有SF符号
- 在苹果内部还是提供了很多方便的,比如下图,你可以根据关键字搜索出你需要的图标
- 同时你放到相应的界面上面,你还可以进行调整!
代码管理(Source Control)
在Xcode 11中,新增了 Stash Changes
和 cherry pick
功能。
Stash Changes
- 选择
Stash Changes
选项,会自动弹出一个对话框,提示我们输入一些Comment
信息。点击Stash
按钮自动跳转到Git
管理Tab
下。
在 Git Tab
页面,会展示出当前本地 Branches
列表、Stash Changes
列表、Tags
列表、Remotes
远程仓库列表。
在 Stash
右下角会有 Stash
功能选择按钮(也可以在左侧Stash Changes
右键弹出)。
简要说下三个选项:
Apply Stashed Changes
:跟git stash apply
作用一样,会把当前Stash Changes
栈顶元素应用到当前分支,Stash Changes
栈不会移除这个Stash
。Export Stashed Changes as Patch File
:将某个Stash Changes
导出一个Patch
文件。Delete
:跟git stash pop
作用一样,将Stash Changes
栈顶元素应用到当前分支,Stash Changes
栈会移除这个Stash
。
Cherry-Pick
假设有两个分支A和B,进行合并分支的时候,你并不想把B的所有commit合并到A,而是想把单个commit合并过来,这时候就得用到git cherry-pick命令了。
选择某个 commit
,然后 cherry-pick
,弹出框点击 cherry-pick
就会将该commit
合并到 master
分支,并生成一个新 commit
。
Debug 工具升级
Xcode 11
中,对模拟器调试做了很多加强。 你现在可以点击调试配置界面,动态改变模拟器的运行参数,比如这里改变主题模式到黑色,改变文字大小,更改辅助选项等等:
这样增强我们开发人员的调试能力,对于每次编码再调整的方式大大优化!其实从这里大家也或多或少也感知到了现在 Apple 对于可视化的能力得到提升! 说白了我们为什么喜欢用 Xcode
胜过 AppCode
是因为
-
Xcode
的官方性 -
Xcode
的可视化能力更强 -
Xcode
的操作更让开发人员省心,省力!
对网络和温度的模拟
Xcode 11
还加入了对网络环境和设备温度的模拟。这两个条件对开发者来说应该不陌生,它们也是最难通过常规手段复现的场景。在设备管理窗口中,现在增加了这几个选项
- 根据
Network Link
可以选择你需要的状态,当然Thermal status
可以选择!都可以让你的 APP 在更有预期的状况下运行。
模拟器
- 直接在Watch模拟器上运行Watch app。
- 基于Metal多模拟器进行了更新,Metal程序可以直接在模拟器上运行。
- 模拟器FPS达到60帧每秒。
- CPU占用率减少至少90%。
- 热启动至少提速2倍以上。
性能分析工具(Instruments)
- 层次更加分明,更容易浏览和更正数据。
- 新的
Swift UI
模版。 - 完全重写了
Metal System Trace
模版,速度提升了10倍以上。
SceneDelegate 更新
Apple
建议我们把视图层级相关的方法从 didFinishLanchingWithOptions
迁移到 SceneDelegate
中的 willConnectTo
方法中。这样做有两个好处:
- 首先可以提高预览结果呈现的速度
- 其次在应用进入后台时,不会做一些额外的操作,只会做一些必要的操作,使应用快速进入睡眠状态,以节省耗电.
关于Swift UI 的更新
其中我有两篇博客也介绍到了 SwiftUI
:
参考:
Apple 官方文档
一线搬砖工人
PS:想要获取给iOS中高级面试官的一份招聘要求 面试题答案的小伙伴可以继续关注我的博客,我会在下面的内容里面会更新出来!同时看到这里了,点个赞吧!Thanks♪(・ω・)ノ