开发者所需要知道的iOS6 SDK新特性

欢迎转载本文,但是转载请注明本文出处: http://2.gy/erSp

iOS6 beta和相应的SDK已经放出了,WWDC2012要进入session环节了。iOS6无疑是这届WWDC的重点,在keynote上面对消费者展示了很多新鲜的特性,而之后的seesion对于开发者来说应该是更为重要。这里先大概把iOS6里新增的开发者可能用到的特性做个简单的整理。之后我也会挑一些自己感兴趣的session做一些整理和翻译工作,也算是对自己的一种锻炼吧~相关的笔记整理如下:

Session 200 What's New in Cocoa Touch  Cocoa Touch新特性一览

Session 405 Modern Objective-C 先进Objective-C

Session 205 Introducing Collection Views Collection View入门

Session 219 Advanced Collection Views and Building Custom Layouts 高级Collection View和自定义布局

Session 202,228,232 AutoLayout使用


地图

iOS6抛弃了一直用的google map,而使用了自家的地图服务。相应地,MapKit框架也自然变成和Apple自家的地图服务绑定了。随之而来的好处是因为都是自家的内容,所以整合和开放会更进一步,第三方app现在有机会和地图应用进行交互了。也就是说,不使用自身搭载地图信息的app现在可以打开地图应用,并且显示一些感兴趣的路线和地点,这对于路线规划和记录类的应用来说这是个好消息~


深度社交网络集成

iOS5的时候深度集成了Twitter,而Apple似乎从中尝到了不少甜头。现在Apple深度集成了Facebook和Sina Weibo。是的你没看错..新浪微博现在被深度集成了。对于开发这来说,特别是中国开发者来说确实是个好消息,因为如果只是想发条信息的话,不再需要进行繁琐的API申请,不再需要接受新浪恶心的应用审核,也不再需要忍受新浪程序员写出来的错误百出的SDK了。使用新的Social.framework可以很简单的从系统中拿到认证然后向社交网络发送消息,这对app的推广来说是很好的补充。

另外,Apple提供了一类新的ViewController:UIActivityViewController来询问用户的社交行为,可以看做这是Apple为统一界面和用户体验做的努力,但是估计除了Apple自家的应用意外可能很少有人会用默认界面吧..毕竟冒了会和自己的UI风格不符的危险…


Passbook和PassKit

Passbook是iOS6自带的新应用,可以用来存储一些优惠券啊电影票啊登机牌啊什么的。也许Passbook这个新应用不是很被大家看好,但是我坚持认为这会是一个很有前景的方向。这是又一次使用数字系统来取代物理实体的尝试,而且从Passbook里我看到了Apple以后在NFC领域发展的空间。因为iPhone的设备很容易统一,因此也许会由Apple首先制定NFC的新游戏标准也为可知,如果成真那电子钱包和电子支付将会变成一大桶金呐…

扯远了,PassKit是新加入的,可以说是配合或者呼应Passbook存在的框架。开发者可以使用PassKit生成和读取包含一些类似优惠券电影票之类信息的特殊格式的文件,然后以加密签名的方式发送给用户。然后在使用时,出示这些凭证即可按照类似物理凭证的方式进行使用。这给了类似电影院和餐馆这样的地方很多机会,可以利用PassKit进行售票系统或者优惠系统的开发,来引入更方便的购票体系,争取更多的客户。当然,现在还只能是当做物理凭证的补充来使用,我始终相信当iPhone里加入NFC模块以后,Passbook将摇身一变,而你的iPhone便理所当然的成了电子钱包。


Game Center

这个iOS4引入的东东一直不是很好用,iOS6里Apple终于对这个体系进行了一些升级。简单说就是完善了一些功能,主要是联机对战匹配的东西,不过我依然不看好…想当时写小熊对战的时候曾经想使用GameCenter的匹配系统来写,结果各种匹配和网络的悲剧,导致白白浪费了一个月时间。而像水果忍者这类的游戏,使用了GameCenter的对战系统,但是也面临经常性的掉线之类的问题,可以说游戏体验是大打折扣的。虽然iOS6里新加了一些特性,但是整个机制和基本没有改变,因此我依旧不看好Game Center的表现(或者说是在中国的表现,如果什么时候Apple能在中国架GameCenter的服务器的话也许会有改善)。

不过值得注意的是,Mountain Lion里也加入了GameCenter。也就是说,我们在以后可能可以用iOS设备和Mac通过GameCenter进行联机对战,或者甚至是直接用Mac和Mac进行联机对战。这对于没有自己服务器/自己不会写服务器后端/没有精力维护的个人开发者提供了很好的思路。使用GameCenter做一些简单的网络游戏并不是很难,而因为GameCenter的特性,这个成本也将会非常低。这也许会是以后的一个不错的方向~


提醒

自带的提醒应用得到了加强,Apple终于开放了向Reminder里添加东西和从中读取的API(Event Kit框架),以及一套标准的用户界面。这个没太多好说的,To-Do类应用已经在AppStore泛滥成灾,无非是提供了一个反向向系统添加list的功能,但是专业To-Do类应用的其他功能相信Apple现在不会以后也不想去替代。


新的IAP

IAP(应用内购买)现在能直接从iTunes Store购买音乐了。这配合iTunes Match什么的用很不错,但是和天朝用户无关…首先是iTunes Store在天朝不开,其次是要是我朝用户什么时候具有买正版音乐的意识的话,我们这些开发者可能就要笑惨了。


Collection Views

不得不说Apple很无耻(或者说很聪明)。"会抄袭的艺术家是好的艺术家,会剽窃的艺术家是优秀的艺术家"这句话再次得到了诠释。基本新的UICollectionView实现了PSCollectionView的功能,简单说就是类似Pinterest那样的"瀑布流"的展示方式。当然UICollectionView更灵活一些,可以根据要求变化排列的方式。嗯..Apple还很贴心地提供了相应的VC:UICollectionViewController。

可能这一套UI展现方式在iPhone上不太好用,但是在iPad上会很不错。不少照片展示之类的app可以用到.但是其实如果只是瀑布流的话估计短时间内大家还是会用开源代码,毕竟only for iOS6的话或多或少会减少用户的..


UI状态保存

Apple希望用户关闭app,然后下一次打开时能保持关闭时的界面状态。对于支持后台且不被kill掉的app来说是天然的。但是如果不支持后台运行或者用户自己kill掉进程的话,就没那么简单了。现在的做法是从rootViewController开始把所有的VC归档后存成NSData,然后下次启动的时候做检查如果需要恢复的话就解压出来。

每次都要在appDelegate写这些代码的话,既繁杂又不优雅,于是Apple在iOS6里帮开发者做了这件脏活累活,还不错~其实机理应该没变,就是把这些代码放到app启动里去做了..


隐私控制

自从之前Apple被爆隐私门以后,就对这个比较重视了。现在除了位置信息以外,联系人、日历、提醒和照片的访问也强制需求用户的允许了。对普通开发者影响不大,因为如果确实需要的话用户一定会理解,但是可能对于360之流的流氓公司会造成冲击吧,对此只要呵呵就好了..= =?


其他一些值得一提的改动

  • 整个UIView都支持NSAttributedString的格式化字符串了。特别是UITextView和UITextField~(再次抄袭开源社区,Apple你又赢了)
  • UIImage现在多了一个新方法,可以在生成UIImage对象时指定scale。为retina iPad开发的童鞋们解脱了..
  • NSUUID,用这个类现在可以很方便的创建一个uuid了.注意这个是uuid,不要和udid弄混了…Apple承诺的udid解决方案貌似还没出现..~现在要拿udid的话还是用OpenUDID吧~~OpenUDID已死,udid暂时无解,请乖乖使用广告vendor id;或者将一个uuid存入keychain可以在大多数情况下替代udid(onevcat与2013.09.01更新)


按照以往WWDC的惯例,之后几天的开发者Session会对这些变化以及之前就存在在iOS里的一些issues和tips做解释和交流。在session公布之后我会挑选一些自己感兴趣并且可能比较实用的部分再进行整理~尽情期待~

时间: 2024-09-12 00:38:34

开发者所需要知道的iOS6 SDK新特性的相关文章

开发者所需要知道的iOS7 SDK新特性

春风又绿加州岸,物是人非又一年.WWDC 2013 keynote落下帷幕,新的iOS开发旅程也由此开启.在iOS7界面重大变革的背后,开发者们需要知道的又有哪些呢.同去年一样,我会先简单纵览地介绍iOS7中我个人认为开发者需要着重关注和学习的内容,之后再陆续对自己感兴趣章节进行探索.计划继承类似WWDC2012的笔记的形式,希望对国内开发者有所帮助. 相关笔记整理如下: 总览 开发者所需要知道的iOS7 SDK新特性 工具 WWDC2013笔记 Xcode5和ObjC新特性 UIKit动力学 

开发者所需要知道的 iOS8 SDK 新特性

WWDC 2014 已经过去一个多月.最激动人心的莫过于 Swift 这门新语言的发布,我在之前已经写了一些关于这么语言的第一印象和一些初步的探索.在写这篇文章的时候,Swift 随着 beta 3 得到了重大的更新,而这门语言现在也还在剧烈的变化之中.对于 Swift,现在大家的探索才刚刚上路,很多背后的机制还并不是非常清楚,或者有可能发生巨大的变化,因此在这里和之后的几篇文章,直到稳定的 1.0 版本出现,我不再打算继续深入针对 Swift 写什么文章.这基本出于对未来可能的变化会容易误导读

iOS 开发者一定要知道的 14 个知识点

本文讲的是iOS 开发者一定要知道的 14 个知识点, 作为一个 iOS 开发者(现在对 Swift 中毒颇深 ).我从零开始创建应用.维护应用,并且在很多团队待过.在我的职业生涯中,一句话一直响彻耳边:"如果你不能解释一件事情,那你根本就不理解它." 所以为了充分的理解我每天的日常,我创建了一个清单,在我看来,它适合任何 iOS 开发者.我会试着清晰的解释每一个观点.[请随时纠正我,提出你的意见,或者干脆也来一发你觉得应该在列表上的"必须知道"的知识] Topic

开发者必须知道的HTML5十五大新特性

HTML5想必大家都很熟悉了,因为太多的媒体在讨论这一技术.然而,你能准确地说出HTML5带来了哪些新特性吗?本文总结了HTML5带来的15项你必须知道的新特性. 一起来看下: 1.新的文档类型 (New Doctype) 目前许多网页还在使用XHTML 1.0 并且要在第一行像这样声明文档类型: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh

开发者不可不知的 Google Chrome 七大新特性

Google Chrome 在日常生活中扮演的角色不只是一个功能强大的网络浏览器,它内置的 DevTools 同样也是网络开发者进行网络开发的重要工具. DevTools 在不断的进行版本更新,其中有很多重要的更新细节你可能会错过.在这里罗列了 Google Chrome 最值得关注的七大新特性. 开始--Chrome 的 DevTools Experiment Chrome 有一些非常棒的实验性特性,这些特性在默认情况下都是隐藏和禁用的.在浏览器地址栏输入chrome://flags/#ena

开发者所需要知道的 iOS 11 SDK 新特性

年纪大了过了能熬夜看 WWDC 的时代了,但是还是在小小宝的哭闹和妈妈大人换尿布的催促中起了个大早.于是算趁着"热乎"把 WWDC 2017 的 Keynote 看完了.和往年差不多,虽然 WWDC 是一个开发者会议,但是 Keynote 并不是专门针对我们开发者的,它还承担了公司状况说明,新品发布等功能.作为技术人员,可能接下来的 session 会更有意义.要用一句话来评价今年 Keynote 所展现出来的内容的话,就是小步革新.大的技术方面可以说只有 ARKit 可堪研究,但是我

开发者所需要知道的iOS 11 SDK新特性

年纪大了过了能熬夜看 WWDC 的时代了,但是还是在小小宝的哭闹和妈妈大人换尿布的催促中起了个大早.于是算趁着"热乎"把 WWDC 2017 的 Keynote 看完了.和往年差不多,虽然 WWDC 是一个开发者会议,但是 Keynote 并不是专门针对我们开发者的,它还承担了公司状况说明,新品发布等功能.作为技术人员,可能接下来的 session 会更有意义.要用一句话来评价今年 Keynote 所展现出来的内容的话,就是小步革新.大的技术方面可以说只有 ARKit 可堪研究,但是我

每个Java开发者都应该知道的5个JDK工具

[编者按]JDK是Java语言的软件开发工具包,没有它就无法编译Java程序.目前,有许许多多的JDK工具呈现在大家面前,但最常用的莫过于java.exe.javac.exe.jar等.除了这几个,还有哪些呢?本文作者Joe拥有多年的Java开发经验,其在博客上分享了一篇文章:5 JDK Tools Every Java Developer Should Know,笔者对其进行了编译,以下为译文. 目前,有许多工具可以绑定到Java JDK上面,其中java.exe和javac.exe是每位Ja

jQuery开发者都需要知道的5个小技巧_jquery

1.禁用右键菜单 复制代码 代码如下: $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return false; }); }); 2.让字体闪烁 复制代码 代码如下: jQuery.fn.flash = function( color, duration ) { var current = this.css( 'color' ); this.animate( { color: 'rgb