xcode7 update

来源:互联网 发布:赛为智能人工智能 编辑:程序博客网 时间:2024/06/06 11:04

1.Size Classes:

从Xcode 6引入的 Size Classes为 iOS 9下的 Split View奠定了基础。

2.APP Thinning

使用 Bitcode来提交整个 app,并且对于不同的型号和屏幕的 iPhone/iPad提供不一样的图片支持(Slicing)

3.Debug:

更强大的 Debug功能。提供了 Energy Report来反应整个 app的资源消耗问题。使用 Address Sanitizer(内存检测)來追踪 Crash的具体位置(在 Run – Diagnostics(诊断)下打开,需要重新变异)。通过 TestFlight收集Crash信息,来追踪并且定位故障。

4.此外,还添加了 Code Coverage功能来检测代码的覆盖程度。

1.SizeClasses。

iOS 8 和 OS X 10.10中一个被强调了多次的主题就是大一统,Apple希望通过 Hand-off和各种体验的无缝切换和集成将用户黏在由 Apple设备构成的生态圈中。而对开发者而言,今年除了 Swift的一个大主题也是平台的统一。在 What's New in Cocoa Touch的 Seesion一开始,UIKit的工程师 Luke就指出了 iOS 8 SDK的最重要的关键字就是自适应 (adaptivity)。这是一个很激动人心的词,首先自适应是一种设计哲学,尽量使事情保持简单,我们便可从中擢取优雅;另一方面,可能这也是 Apple不得不做的转变。随着传说中的更大屏和超大屏的 iPhone 6的到来,开发者在为 iOS进行开发的时候似乎也开始面临着和安卓一样的设备尺寸的碎片化的问题。而 iOS 8所着重希望解决的,就是这一问题。

 

Size Classes

首先最值得一说的是,iOS 8应用在界面设计时,迎来了一个可以说是革命性的变化 - Size Classes。

 

基本概念

在 iPad和 iPhone 5出现之前,iOS设备就只有一种尺寸。我们在做屏幕适配时需要考虑的仅仅有设备方向而已。而很多应用并不支持转向,这样的话就完全没有屏幕适配的工作了。随着 iPad和 iPhone 5,以及接下来的 iPhone 6的推出,屏幕尺寸也变成了需要考虑的对象。在 iOS 7之前,为一个应用,特别是 universal的应用制作 UI 时,我们总会首先想我们的目标设备的长宽各是多少,方向变换以后布局又应该怎么改变,然后进行布局。iOS 6引入了 Auto Layout来帮助开发者使用约束进行布局,这使得在某些情况下我们不再需要考虑尺寸,而可以专注于使用约束来规定位置。

 

既然我们有了 Auto Layout,那么其实通过约束来指定视图的位置和尺寸是没有什么问题的了,从这个方面来说,屏幕的具体的尺寸和方向已经不那么重要了。但是实战中这还不够,Auto Layout正如其名,只是一个根据约束来进行布局的方案,而在对应不同设备的具体情况下的体验上还有欠缺。一个最明显的问题是它不能根据设备类型来确定不同的交互体验。很多时候你还是需要判断设备到底是 iPhone还是 iPad,以及现在的设备方向究竟是竖直还是水平来做出判断。这样的话我们还是难以彻底摆脱对于设备的判断和依赖,而之后如果有新的尺寸和设备出现的话,这种依赖关系显然显得十分脆弱的(想想要是有 iWatch的话..)。

 

所以在 iOS 8里,Apple从最初的设计哲学上将原来的方式推翻了,并引入了一整套新的理念,来适应设备不断的发展。这就是 Size Classes。

 

不再根据设备屏幕的具体尺寸来进行区分,而是通过它们的感官表现,将其分为普通 (Regular)和紧密 (Compact)两个种类 (class)。开发者便可以无视具体的尺寸,而是对这这两类和它们的组合进行适配。这样不论在设计时还是代码上,我们都可以不再受限于具体的尺寸,而是变成遵循尺寸的视觉感官来进行适配。

UITraitCollection和 UITraitEnvironment

为了表征 SizeClasses,Apple在 iOS8中引入了一个新的类--UITraitCollection。这个类封装了像水平和竖直方向的 Size Class等信息。iOS 8的 UIKit 中大多数 UI的基础类 (包括 UIScreen,UIWindow,UIViewController和 UIView) 都实现了 UITraitEnvironment这个接口,通过其中的 traitCollection这个属性,我们可以拿到对应的 UITraitCollection对象,从而得知当前的 Size Class,并进一步确定界面的布局。

 

2.bitcode

说的是bitcode是被编译程序的一种中间形式的代码。包含bitcode配置的程序将会在App store上被编译和链接。bitcode允许苹果在后期重新优化我们程序的二进制文件,而不需要我们重新提交一个新的版本到App store上。

当我们提交程序到App store上时,Xcode会将程序编译为一个中间表现形式(bitcode)。然后App store会再将这个botcode编译为可执行的64位或32位程序。

再看看这两段描述都是放在App Thinning(App瘦身)一节中,可以看出其与包的优化有关了

 

Bitcode配置

在上面的错误提示中,提到了如何处理我们遇到的问题:

You must rebuild it with bitcode enabled(Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, ordisable bitcode for this target. for architecture arm64

要么让第三方库支持,要么关闭target的bitcode选项。

实际上在Xcode7中,我们新建一个iOS程序时,bitcode选项默认是设置为YES的。我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置。

不过,我们现在需要考虑的是三个平台:iOS,Mac OS,watchOS。

对应iOS,bitcode是可选的。

对于watchOS,bitcode是必须的。

MacOS不支持bitcode。

1 0
原创粉丝点击