Xcode101新特性及解决的问题

距离Xcode10.1正式版发布已经将近一个月了,我们今天重新来回顾一下Xcode10.1的新特性,以及已解决的问题和存在的问题。

本文主要参考了《Xcode10.1ReleaseNotes》进行整理,同时你也可以查阅《Xcode10ReleaseNotes》获取更多关于Xcode10的细节。

接下来我们将以新特性(NewFeatures)、已解决的问题(ResolvedIssues)、已知问题(KnownIssues)等几方面来介绍Xcode10.1在各模块上的更新。

1.General/通用

新特性

支持arm64e处理器架构(预览版)如果你想尝试尚处于开发者预览版的arm64e,请在Xcode项目编辑器中选择你的iOSapp对应的target,在BuildSettings中找到Architectures设置项,选择Other…选项,然后添加手动添加arm64e到architectures列表中。

注:目前AppStore和TestFlight并不接受包含arm64e的提交,所以当我们Archive后在Organizer窗口要向苹果提交发布时,Xcode会自动移除掉app包中arm64e的内容。

已解决的问题

菜单中NavigateOpenin…的导航栏UI不再将窗口中的各个tabs显示为单独的窗口,每个窗口都有一个tab。xed工具现在使用由当前xcode-select或DEVELOPER_DIR环境变量指定的Xcode。2.AppleClangCompiler/苹果Clang编译器

已解决的问题

对iOS12.1beta2中的libunwind库进行修改,解决了在iPhoneXS和iPhoneXSMax上运行少部分app的问题。3.AssetCatalog/资源目录

已知问题

项目中如果包含了assetcatalogs并使用Xcode10.0或者更高版本的构建的app,且其DeploymentTarget(指最低支持的系统版本)设为iOS9.0、9.1或者9.2时,会生成与这些iOS版本的运行时不兼容的内容(具体表现为:在系统版本为9.0~9.2.1之间的真机设备上通过AppStore或者TestFlight下载安装该app并运行,会出现偶现的Crash)。注:关于这个问题,相信大家已经很熟悉了,网上有很多讨论,我们之前也发了几条相关的小集。它是在Xcode10.0上开始出现的,而在Xcode10.1刚发布时,苹果声称已经解决了,后面大家纷纷表示这个问题仍然存在。不过根据微博上的最新消息和小伙伴们的亲自验证,苹果已经在服务端解决了这个问题,开发者通过Xcode10.1打的ipa包在上传到AppStoreConnect后台,苹果在处理包的过程中会自动修复。

已解决的问题

增加40mm和44mm的孔(wells)用于解决指定正确的图标大小的难题。4.BuildSystem/构建系统

已解决的问题

新的构建系统支持“按需资源”(OnDemandResources,ODR)。修复了问题:在为.xib文件或storyboards使用基本本地化时,不会将与基本文件关联的各个本地化的.xib文件或storyboards编译到产品中。5.Debugging/调试

新特性

对于异常断点(ExceptionBreakpoints)的断点编辑器增加了一个ignorecount字段。6.Devices/设备

已解决的问题

运行iOS12或更高版本的设备从Devices窗口中请求获取屏幕截图的问题。7.InterfaceBuilder/界面构建工具

新特性

现在,在画布中拖动控件(Control-dragging)以添加约束总是包括所有四个方向,而不仅仅是最接近拖动方向的方向。已解决的问题

修复了问题:在将视图与UIScrollView的子视图添加约束时,AutoLayout会错误报告问题。提高了画布(canvas)的性能:当底部设备栏在iPhoneXS、iPhoneXSMax和iPhoneXR之间切换时。修复了导致预览助手编辑器(Previewassistanteditor)中监视内容布局与设备栏选择不匹配的问题。现在,当启用

IBDesignable视图时,将使用新的构建系统进行编译。8.Simulator/模拟器

已知问题

如果有另一个进程,例如simctl,在模拟器正在打开时关闭了模拟的设备,则模拟器在下次启动设备时无法正确地重新连接到模拟器。如果你安装了多个版本的Xcode,则在其他版本的Xcode中运行模拟器是可能也会遇到这个问题。临时解决方案:退出并重新启动模拟器。要在不关闭所有模拟器的情况下退出,请先按住Option键并选择SimulatorQuitSimulator…,然后在出现的对话框中选择KeepRunning。

9.SwiftCompiler/Swift编译器

已知问题

如果你在一个类的实例对象上通过使用protocol或extension中定义的nonmutatingsetter来间接修改属性,则Swift编译器可能会出现错误编译:在调用该属性的getter方法之后就直接释放该实例对象。这可能会导致程序崩溃或在运行时出现不可预测的行为。例如:

protocolSomeProtocol{}classSomeClass:SomeProtocol{}extensionSomeProtocol{varsomeNonmutatingProperty:CGPoint{nonmutatingset{_=self}get{return.zero}}}//Mightbemis


转载请注明:http://www.aierlanlan.com/rzfs/1932.html