iOS 6编程实战第1章:全新的系统_iOS 6编程实战第1章:全新的系统试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > iOS 6编程实战 > 第1章:全新的系统

iOS 6编程实战——第1章:全新的系统

  就在2007年,史蒂夫·乔布斯在MacWorld大会上声称运行在iPhone上的软件要比其他竞争者领先至少五年。从最初的版本发布到我们编写本书为止,苹果公司每年都在更新操作系统,并且还推出了另外两款支持iOS的新设备——iPad和Apple TV。由于iPhone以外的其他设备也能运行该操作系统,因此它被更名为iOS。现在,五年时间已经过去了,乔布斯的话果真应验了:iOS依然是最先进的操作系统。而iOS 6加入的新功能——包括一些基于开发者的特性,比如集合视图、自动布局以及改进的数据隐私保护等——使这个系统得到了进一步提升。   这本书主要介绍iOS 6编程。本章,我会简单讲解一下iOS 6的主要功能,顺便告诉你去哪些章了解详细内容。 1.1 新功能   每个版本的iOS都会引入几个关键功能和其他一些小幅改动。iPhone OS 2的时候开始支持公共的SDK开发工具。   iPhone OS 3将Mac上的Core Data功能加到了iPhone上,此外还有一些其他改进,比如推送通知、ExternalAccessory工具集、用于应用内购买的StoreKit.framework、程序内的电子邮件表单、能让开发者在程序内嵌入谷歌地图的MapKit.framework、对iPod库的只读访问机制以及钥匙串数据共享。   小幅更新的3.1系统中还添加了视频编辑支持,而3.2系统的小幅(而重要的)更新中添加了Core Text和手势识别、文件共享以及生成PDF文件的支持。3.2系统还添加了对一个全新产品iPad的支持,支持开发可以运行在iPad上的应用,而通用的应用可以同时运行在iPad(3.2)和iPhone(3.1.3)中。不过,3.2系统只支持iPad,无法运行在iPhone以及iPod touch设备上。   iPhone OS 4(之后更名为iOS 4)引入了期待已久的多任务支持、本地推送通知、对日历的只读访问机制(EventKit.framework)、代码块(block)和Grand Central Dispatch、程序内短消息发送以及对Retina屏幕的支持。这个版本只支持iPhone,不支持为iPad开发应用。之后更新的4.2系统可以同时支持iPhone和iPad。   iOS 5引入了一些重要的功能,比如iCloud、自动引用计数、内置Twitter框架和其他一些更新。   iOS 6引入了Pass工具集,它是支持提供商将门票、通行证和优惠券直接推送到我们iPhone中的一个框架。比方说,iOS旅馆预定应用可以将登记证明以凭证的形式发送到用户的iPhone上。   iOS 6还向用户提供了全新的地图应用。对程序员来说,可以使用新的SDK来显示你的位置。对MKMapItem类调用openMapsWithItems:launchOptions:方法可以打开地图: + (BOOL)openMapsWithItems: (NSArray *)mapItems launchOptions: (NSDictionary *)launchOptions   不过,iOS 6不支持通过URL scheme打开地图程序。因此你需要在iOS 5设备上转用谷歌地图,如以下代码片段所示: if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"maps"]]) { //特定于ios 6 [MKMapItem openMapsWithItems:<items> launchOptions:<options>]; } else { //针对ios5,回到谷歌地图方式 [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"http://maps.google.com/<your url>"]] }   本书着重讲解iOS 6中添加的新功能。在接下来的几节中,将介绍iOS 6中添加的关键特性,对应用开发加以指点。 1.1.1 集合视图   可以说,iOS 6中最重要的新功能是用来显示并管理集合视图的全新控制器。集合视图(collection view)提供了一种类似栅格视图的UI元素布局方式,就像内置的照片和iBooks应用一样。你不再需要依赖第三方的栅格视图框架来创建栅格和使用滚动视图。集合视图还提供了用动画来展示内容的简单方式(类似于UITableView的行动画),并能对它们执行添加、删除和重新排序操作。(第7章将详细介绍集合视图。) 1.1.2 自动布局   自动布局(Auto Layout)是一种新的布局方式,可以决定用户界面上对元素进行布局的新规则。Mac OS X SDK在去年引入了这个功能,并将其移植到了iOS 6中。自动布局比我们以前使用的Spring和Struts模型框架更加直观,并且内置了对反向语言(从右到左阅读)的镜像UI元素的支持。可以说,自动布局带来的最好功能是可以在本地化nib文件的时候更换文字内容。 1.1.3 自动引用计数   虽然ARC(Automatic Reference Counting,自动引用计数)是在iOS 5中引入的,但是有关ARC的信息和LLVM编译器的内部工作原理都有了极大的改善,其中包括属性的默认存储类型。本书这一版添加了全新的一章(第5章)来讲解ARC,包括ARC的内部工作原理以及如何使用Convert to Objective-C ARC工具来转换代码,以使其支持Objective-C的ARC特性。   ARC与Mac OS X 10.5版本(Leopard)提供的垃圾回收机制不同。垃圾回收是自动内存管理,而ARC是自动引用计数。这意味着你作为一名程序员,不需要为每个retain语句编写相应的release代码,编译器会自动添加这些内容的。   ARC添加了两个新的生命期修饰符,即strong和weak,并采用了全新的规则。举个例子,你不需要再为任何对象调用release和retain语句。dealloc方法也同样遵循这个规则。当你使用了ARC,只需要在dealloc方法中释放资源(文件或端口),而不必释放实例变量。(更多关于ARC的内容,请参阅第5章。) 1.1.4 应用内购买的托管内容   iOS 6允许你使用苹果的应用内购买功能提供可下载的内容。举个例子,假设你创建了一个赛车游戏,并且想要通过应用内购买出售跑车和赛道,可以使用苹果公司的服务器托管赛道的贴图以及跑车的模型文件。当购买完成后便启动一次下载,而且你不需要为托管这些文件承担任何成本。(要了解应用内购买的更多知识以及如何下载托管内容,请参阅第18章。) 1.1.5 社交框架   iOS 5将Twitter的体验直接集成到了操作系统中。这使得从应用中发送一条推文就像使用程序内置的电子邮件表单发送电子邮件一样简单。这个框架还提供了身份验证功能。iOS 5上的Twitter框架以及Account框架一起提供了对账户的验证功能。而在iOS 6中,苹果使用Social.framework替代了Twitter.framework,它更加通用,并且除Twitter以外还能处理其他社交网络,比如Facebook和新浪微博。对于程序员来说,Facebook紧密地结合在操作系统中了,发送Facebook消息以及账户认证的过程因此变得更加简单,并且不需要再使用Facebook的官方Graph SDK了。不过,如果你想支持iOS 5设备,那么仍然需要Facebook的Graph SDK。UIKit.framework新引入了一个叫作UIActivityViewController的视图控制器,它和Social.framework一起将信息发送到社交网络上。 1.1.6 UI状态保留   在iOS 3和更早的版本中,恢复UI状态是一件难事。苹果在iOS 4中引入了多任务后,应用就能在进入后台的时候自动保留UI的状态。但是低内存环境会关闭你在后台的程序进程,并且你的应用不会接收到通知。当程序在后台被关闭后,就很难恢复UI的状态了,而恢复UI状态的唯一办法是实现各种代码,也就是在iOS 4之前程序员用来恢复UI的代码。而在iOS 6中,通过UIKit对状态恢复提供的支持,苹果公司令状态保留更加简单了。(参阅第13章可以获取更多关于UI状态保留的知识。) 1.1.7 其他新功能   iOS 6还引入了其他一些简单的功能,包括Pass工具集、增强的隐私功能、支持与提醒事项程序交互,更重要的改进就是UITextField可以支持富文本了。 1. Pass工具集   Pass工具集是一个新的框架,允许用户在iOS设备上存储像优惠券、登机证和门票之类的东西,以代替实物。凭证是由服务器创建的,并被发送到用户的设备上,作为一名iOS程序员,你不需要写代码来控制它们。Pass工具集在iOS 6中是一个重要功能,它更像APNS(Apple Push Notification Service,苹果推送通知服务),主要依赖服务器端,而在客户端几乎不用写什么代码。因此,本书不会讨论Pass工具集。 2. 提醒事项   iOS 4引入了EventKit.framework框架,它可以让第三方程序访问用户的日历。而在iOS 6中,EventKit.framework还拥有了与用户的提醒事项程序交互的方法。 3. 隐私   隐私一直是应用很重视的问题。在iOS 6之前,一些应用(包括知名度较高的社交网络公司,比如Path)会不经用户明确同意,就把用户的通讯录信息上传到自己的服务器。而在iOS 6中,访问通讯录和照片库(分别通过AssetLibrary.framework和UIImagePickerController访问),还有提醒事项程序和日历,都需要用户明确的许可。也就是说,如果你曾经访问过这些信息,那么现在可能会从用户那里获得空数据。你还可以在应用程序的Info.plist文件中设置这些键的值来说明为什么要访问这些信息:NSLocationUsageDescription、NSPhotoLibraryUsageDescription、NSCalendarsUsageDescri- ption、NSContactsUsageDescription和NSRemindersUsageDescription。你也可使用图1-1中展示的选项来利用UI设置值。 图1-1 Info.plist显示了新添加的Usage Description键 4. 显示富文本   UITextView和UITextField都支持NSAttributedString,而你可以通过创建NSAttribut- edString来显示富文本。你需要使用CoreText.framework来创建一个NSAttributedString。(关于Core Text的讨论,请参见第26章。) 1.2 小结   iOS的采用率一直都领先于它的竞争者。两年前,iPhone OS 3发布的时候,因为需要付10美元来升级,所以采用率在iPod touch上受到了一定的影响。不过,苹果公司很快就让它免费了,而采用率也得到了上升。与之类似,当苹果公司发布iOS 4的时候,采用率一开始也是上升缓慢,因为它在旧手机(也就是iPhone 3G和第一代iPhone,当然也包括iPod touch)上存在性能问题。一些功能(尤其是多任务)也不支持旧设备。虽然如此,最新版本的iOS在最初发布的一两个月内通常可以达到90%以上的设备采用率。iOS 5没有受影响,采用率上升速度也比iOS 4快,这也许是因为它在旧手机(比如iPhone 4)上不会遗漏什么功能。此外,旧设备(比如iPhone 3GS)在iOS 5上并不像在iOS 4上那样慢。而简洁的通知、iTunes、WiFi同步和iMessage都是加速用户采用iOS 5的关键功能。   iOS 5.1是第一个支持OTA(Over-The-Air)的升级,采用率甚至比iOS 5还要高。到了iOS 6,我估计会有同样高的采用率。所有一切都意味着,为了让应用更加耀眼,你要尽快使用iOS 6的每一个功能。像集合视图以及使用自动布局支持更高的新iPhone 5等功能,就足以成为你将应用升级到iOS 6版本的理由。废话不多说,是时候开始iOS 6之旅了。 1.3 扩展阅读 苹果文档   下面的文档位于iOS Developer Library (https://developer.apple.com/library/ios/navigation/index.html)中,通过Xcode Documentation and API Reference也可以找到。 What’s new in iOS 6   

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《iOS 6编程实战》其他试读目录

• 前  言
• 译 者 序
• 第1章:全新的系统 [当前]
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •