Xcode7.0
随着IOS9的到来,苹果更新了对应的开发工具Xcode,在新的Xcode7中,新的开发工具已经扩大到支持watchOS2平台以及IOS9,IS X EC Capitan,借助于许多新的特性使得我们开发者开发应用,测试,调试等更加显得无缝链接和高效。Xcode7实现了很多以前没有的新功能,如允许我们检测内存泄露再它发生的时候,测试您的应用程序界面,测试覆盖率报告,或者确保应用程序和产品下载到用户的设备中不会消耗太多不必要的宝贵资源。
Xcode7使开发者创建的产品是为每个苹果设备量身定制的。让开发者利用广泛的MacBook air,iPhone或者iPad,Xcode提供的开发工具可以很快的将您的创意转化为现实。Xcode7需要OS X 10.10.4及其以上的系统版本,它涵盖的watchOS2.0,IOS9,OS X10.11版本的SDK,Xcode7有如下的新特性:
1.free on-device development
在Xcode7中,开发者可以自由的在设备上运行和测试自己的应用。就是说开发人员可以在MC,iPhone,iPad,iPod touch上运行和测试自己的程序,而无需加入注册苹果的开发者账号。甚至可以使用和APP store及iTunes相同的apple ID,当你准备发布你的程序,只需要完善开发者计划,就可以上传应用到app store。更多关于安装可运行程序的详细资讯可以查看Launching Your App on Devices
2.swift 语言
swift2.0采用了更为先进的面向对象编程语言思想,swift2.0是更为现代的,强大,富有表现力和容易使用,在swift1.2中增加了下面新特性:
- 差错处理:现在,在Swift中支持错误处理,如抛出(throw)、捕获(catch)、管理(manage)等,并且可以和NSError无缝交互。而当新的API需要向后兼容旧的系统版本时,如果当前API和将要部署的目标系统版本不一致,将会抛出一个编译时错误。
- 可用性检查:如果你在一个旧的部署平台上调用的一个新的系统版本引入的API时将触发一个编译时错误。我们可以在if或者guard条件语句中使用#available()函数来检查API函数的可用性:例如:
if #available(iOS 8.0, OSX 10.10, *) {
// 当版本匹配时使用Handoff APIs.
let activity =
NSUserActivity(activityType:"com.example.ShoppingList.view")
activity.becomeCurrent()
} else {
//当版本不匹配时返回.
}
你可以在你的代码声明中使用@available()属性声明来指定可用性信息。 例如:
@available(iOS 8.0, OSX 10.10, *)
func startUserActivity() -> NSUserActivity {
...
}
- 可测试性:关于Swift2.0框架和App的测试现在不需要将内部功能代码路由到public代码了。在待测试代码中使用@testable import {ModuleName}语法使所有的内部私有和public出来的代码可用。App或者framework的target在编译时需要启用“Enable Testability”编译设置。这个“Enable Testability”编译属性只能在Debug配置中可用,因为它需要导出内部符号信息从而妨碍代码优化。
- 协议的扩展性:现在可以为协议类型编写扩展,这样就可以为遵循该协议的任意类增加方法或者属性,极大重用我们的代码。
Xcode7还支持代码迁移,你可以很高效的把现有的swift1.2的代码升级到2.0平台上。
关于更多的swift语言信息,可以查看官方的文档。
3.Object-C
OC增加的新语言特性,可以和swift协同工作更加容易和高效。
- Generic Collection:允许指定集合类的信息,如NSArray,NSSet,NSDcitionary,类型信息提高了swift访问OC代码的效率并且使我们代码编写更加简单。
- NULLability注释:我们可以指定OC代码时候为空或者非空,该特性使swift可OC framework的通信更加平滑。
- kindOf
4. Playground
富文本注释:采用Markdown样式的语法来解释代码的功能。
内联结果:在代码的下方直接显示代码的输出的结果。
资源:允许使用项目导航器面板向Playground中增加诸如图片一样的资源。
辅助代码:在Playground本身之外保留额外的代码用作辅助功能。
分页:采用Bundle类似的方式来组织Playground结构。
5.App Thinning
通过Xcode7,你可以开发3个不同平台的应用程序,并且他们可以运行再不同的配置的设备上。
这些设备拥有不同的存储和显示的功能,你可以提供一个优化的应用程序给每个平台的设备,这里的优化是指应用只包括有用的函数及资源。
- bitCode:当你提交应用到APP store中,Xcode把你的应用编译成中间件的形式,APP store再根据需要把bitCode编译成对应的32或者64位可执行程序。
6.Debug
更強大的 Debug 功能。提供了 Energy Report 來反映整個 app 的資源消耗問題。使用 Address Sanitizer 來追蹤 Crash 的具體位置(在 Run - Diagnostics 下打開,需要重新編譯)。通過 Test Flight 收集 Crash 信息,來追從並且定位故障。
7.Testing
之前用的比較多的用來進行測試的是 XCTest 還有 Xcode Server,之前也寫過一篇文章來講如何進行自動化的 UI 測試。這次 Apple 直接給我們帶來了 UITesting 這個類,並且可以直接對模擬器進行錄製腳本后插入斷言來實現 UI 測試。這相比之前使用 Automation 測試方便了很多。
此外,還添加了 Code Coverage 功能來檢測代碼的覆蓋程度。