关于Xcode10的那些事
前言
这里主要介绍一下xcode10 版本主要更新的内容。
随着ios12的发布,xcode10已经可以从mac app store下载。
xcode10包含了ios12、watchos 5、macos10.14以及tvos 12的sdk。另外,开发者可以从xcode中看到当前deployment target最低为ios8,所以后续开发过程中个人觉得可以忽略ios8之前的一些特性。
要想安装xcode10,mac系统版本必须是macos 10.13.6或者更高。这里对主要的一些变更做一些介绍(并非所有)。
新特性
-
nsdata类型的数据可以直接导出来。例如一张图片转成data之后,在快速浏览框可以直接将data导出,最终保存成包含二进制的文件。
-
新建的schemes默认被所有用户共享。如果想建一个私人的scheme,在manage schemes中不选择shared即可。
-
快捷键“ctrl+0”可以打开弹出scheme选择,“ctrl+shift+0”可以弹出运行设备选择。当弹框出来的时候,可以直接使用键盘上的上下左右选择,然后点击回车即可选中。
-
library控件库的位置从原来的右下角移动到了顶部,默认选中一个控件往storyboard拖得时候library控件库会关闭,按住option键可以在拖动控件的时候保持library库不消失:
library的位置从底部移动到了inspector的上方window中。现在变得更加灵活,想spotlight search那样可以随意拖动,当元素拖动的时候,该library框就会消失。但是如果按住option键拖动,该弹框就不会消失。
现有问题
如果打开存储在icloud drive中保存的xcode工程或者workspaces,或者是为存储在icloud drive中的工程通过git(其他version管理工具)切换分支,可能会导致xcode终止运行。
已解决的问题
-
新建的文件.h默认包含ns_assume_nonnull_begin 和ns_assume_nonnull_end。这两个宏之间的代码,所有指针对象都会假定为nonull,所以我们在开发的时候只需要指定那些nullable的对象即可。
弃用的东西
- c++库libstdc++在xcode8的时候已经弃用,在xcode10以及之后将不再支持(ios target)。c++工程必须迁移到libc++。除了修改c++标准库的build setting,开发者还应该查看一下硬编码的linker flags和target的依赖,删除libstdc++(包括-lstdc++、-lstdc++6.0.9、libstdc++6.0.9.tbd和libstdc++6.0.9.dylib)的引用。项目中依赖的针对libstdc++构建的静态归档文件也需要针对libc++重新构建。(也就是说我们需要检查一下target的build phases,里面的link binary with libraries如果包含上述提到的库,需要删除,并且移除driveddata)。
- 移除了对subversion的支持。
- xcode10是最后一个支持swift3的版本。通过打开project>edit> convert>to current swift syntax..来将swift3的代码转成swift4.2。
- macos 10.14sdk不再支持32位程序。如果开发者需要编译i386,使用xcode9.4或者更早版本的xcode。
设备
使用xcode10运行老版本xcode构建的watchkit app,将会报错:“thewatchkit app has an invalid stub executable”。解决办法:clean build文件夹,然后从新运行。
文档查看
-
按住option查看quick help的弹框展示内容变成了单列布局格式,并且选中查看的方法在弹框中展示的背景颜色和当前xcode主题颜色一致:(当前为黑色主题,弹框的注释内容也是黑色)
模拟器
-
原来在模拟器的edit菜单有专门的get pasteboard && send pasteboard来做复制粘贴同步,现在在该菜单下有一个专门的item来处理复制粘贴操作:automatically sync pasteboard。也就是说只要使用这个功能即可实现粘贴复制在mac和模拟器数据的同步。
编辑器
-
支持多cursor编辑。快捷键:shift+control+点击(如果想取消某个cursor,则再次点击即可)
-
不连续选中操作支持:control+shift+点击
下一篇: 安卓投屏助手(B1358)之辅助调试