Friday, September 9, 2011

学习苹果WWDC 2011视频讲座的笔记(18)

现在有许多事情要做,WWDC2011视频的笔记将在忙里偷闲中继续进行。虽然我早已看完所有的视频,但是回过头来在温习回顾一下还是有不少收益。通过文字的笔记,将来也比较容易从博客中查询。另外最近几天我还发现过去下载的一些视频,比如WWDC2008,其中也有不少苹果软件开发和操作系统内部的丰富内容,非常有价值。我目前选择一些有兴趣的内容继续学习。

Session 123 - Improving The Stability Of Your Apps


本讲座介绍如果向软件开发者介绍如何改进和增加软件的稳定性。苹果在为软件开发者提供软件商店窗口之后,苹果在移动设备方面开创了新的软件开发和传播的方式。苹果因此收到许多软件开发者制作的成千上万的软件,因此苹果对软件的质量情况也掌握了大量的数据。本讲座针对主要发生的问题,为开发者提供一些一般的设计软件指导和一些基本的技巧。

第一点上软件的兼容问题。苹果自推出iPhone到现在的iOS,已经出现的许多不同的版本。苹果的操作系统和平台支持基本上为软件开发者提供了一个十分稳定的系统,苹果的基本操作系统不断更新基本上是兼容的。讲座中指出有些软件开发者采用非正规的方式探测操作系统,而不是采用苹果推荐的方式,其结果会造成软件难以维持持续的更新。

有关苹果不断推出的新的支持库,苹果建议采用弱链接的方式(weak link),这样如果iOS能找到其支持的库,就会自动载入支持的库。对于新的class支持,苹果建议采用Objetive-C的语法如[CIImage class]来检测class是否存在,这样不会出现程序或软件的崩溃(crash)。

在程序的info.plist中有很多项目可以设置,比如不同方向的支持(在View Controller中还有API可以用来具体支持方向性),Wifi的支持,iTunues中文件的支持,gyroscope的支持,如果这些没有设定,程序中就不会得到操作系统的交流信号。

在用户的设备上,如果app发现突然crash,crash的报告在~/Library/Logs/CrashResporter/MobileDevice/[Device-Name] 。通过报告可以知道问题出现的原因和原码位置。讲座列举了通常出现的错误和crash的原因,这些crash是苹果统计结果出现最多的情况。

讲座强调软件的测试十分重要,苹果提供了许多工具可以测试软件各个方面的情况。这是一个不可忽视的步骤。

Session 124 - Twitter Integration


苹果的移动设备支持许多其它公司通过的网络服务和服务平台,比如苹果的地图服务就是通过与谷歌的地图服务合作,在此基础之上提供了一系列API支持。这次苹果与Twitter合作,又推出一新的Twitter服务的支持平台。这样提供了一个统一和方便使用的一系列class和API,这也为将来的维护和支持提供了连续性的标准。

Twitter目前是全球最大的网络微博服务,有2亿用户,一周有10亿条微博,比如说,日本地震期间每秒发出了5,530条微薄。目前在iOS上面就已经有3,000个软件与Twitter有关。

在这个过程中,苹果了解到如何解决支持Twitter的要求和难题。本讲座介绍苹果推出的微博平台,简洁的API,使用和开发十分方便,例如苹果的iOS系统提供Twitter账户,并推出一系列的支持Twitter的API。

TWTweetComposeViewController提供外观界面支持,可以用来确定Twitter服务的状态,提供统一的微博用户界面,采用block方式提供微博完成之后的编码支持。

微博的Attachments支持目前有:文字,图像和网链(URLs)。文字长度为140个字符,图像和网链长度目前是19个字符,将来可能有改变。目前的微博界面是对话式界面(modal),介绍人建议在显示之前应该先检查相应的账户能否送微博:+(BOOL)canSendTweet。送大的图像会影响运行速度。

苹果推出一新的Accounts平台,通过这一平台可以从程序中直接查询系统iOS的账户,目前这个账户平台只有Tweet账户,通过该平台可以建立多个账户,自动验证账户。

讲座介绍了账户的整个设计结构,其中的classes有ACAccountStore, ACAccountType, ACAccount, ACAccountCredential。采用这些classes可以用来查询账户,建立账户和得到账户变更的通知等。

Twitter请求的API通过TWRequest来进行,由此可以得到数据。

讲座有详细的Demo,其中一个挺有意思,通过猴子使用图像的方式来送微博信息和相应的图像,这样的软件设计使得传送微博的信息更有意思。

No comments:

Post a Comment