Monday, October 10, 2011

WWDC2011视频的学习笔记(20)

乔布斯走了,今年的WWDC2011是乔布斯最后一次出现的苹果全球开发者大会。大会开幕当天,乔布斯作了要点讲演,苹果当天播了讲演视频。我还记得他在开幕式上的介绍Mac Lion操作系统和iOS 5新功能,虽然他当时身材已经非常消瘦,但他仍然充满激情,介绍苹果电脑操作系统和iOS操作系统的新功能,当时他在台上的时间并不是很多,许多新的功能都是由苹果团队其他成员介绍的,但他仍然像往常一样,他介绍了最为精彩的苹果新技术。在最后他介绍了苹果iCloud的新网络同步平台,这是他多年来亲手负责组织开发的新功能,这是可惜他还没有看见新iOS和iCloud的正式出台,他过早离开了人世,离开了他所热衷的苹果事业。

乔布斯讲演有一些典型的特点,几乎在每次讲演最后,他会说,最后还有一件事,很小的事,There is one more thing,当时他重复这一台词时,台下观众热情鼓掌呼叫,乔布斯镇静地说,很小一件事,no, a small thing,这就是iCloud平台的分享音乐服务。现在这一功能将随着iPhone 4S和iOS 5的正式推出将光亮登场。这些最为美好和激动人心的时刻现在已经成为历史,但是所有这些将会永远留在人们的心中。祝愿乔布斯所有这些创新,不久将会到得到苹果用户的喜爱,并继续取得成功;祝愿苹果公司将继续乔布斯的革新计划,继续以新的科技在未来为人类的生活提供更为新颖和丰富的内容。

下面是我继续的学习笔记:

128 - Advanced Text processing


文字处理几乎是所有软件必须要面临和处理的现实,苹果OS X和iOS都有很多API提供文字处理和支持。从编程来说,如何处理string是一个很常见的工作。苹果注重多语言支持,本讲座介绍了许多如何处理string的正确方法。

首先讲座通过一个简单的例子说明,文字中有文章的段落,句子,词和字符。这些在苹果操作系统中都支持多种语言,其中字符称为character clusters,而不是简单的unicode。比如法语中的è是由两个基本字符组成,韩语中许多字则是由两个甚至三个以上的字符组成。因此在处理过程中不能再简单按照英文字符方式进行处理,苹果推荐使用string class中的许多API来进行处理,讲演中用循环作为一个例子来处理最基本的字符。

词是字符基础之上的另一个基本概念。苹果也有相应的string API来处理词,讲演中举例用循环来处理string中的词。使用这些正确的API不仅可以处理英文,而且可以处理如日语和中文里的词(这些语言的词与英文不同,不是用空格来区分的)。苹果这些API为编程提供了非常方便的处理方式。

对于段落也是如此,阿拉伯和希伯来语的段落与西语不同,通过苹果API可以处理这些语言的段落。

搜索、Matching、比较是string中常见的问题,苹果也提供了相应的API来提供进行搜索、Match和比较。另外有许多其它的API提供其它支持。

讲演中列举了支持string搜索和替换的API,并有例子示范。

RegularExpress是计算机学中常用算法,苹果在此基础之上提出的是NSRegularExpression,该class提供了许多支持多语言的搜索和替换API。这些都是苹果软件开发中推荐使用的正确方法。

接着介绍了Data Detector,数据探测,实际应用中有许多特殊的数据,比如日期,地址,网址,电话等,不同语言有不同的表达方式,苹果操作系统提供NSDataDetector的API提供各种方便的支持,这样编程人员不必应付不同语言的苦恼问题,所编写的程序可以支持各种语言。讲演中举了大量的例子说明这些API的用法,实际上这是RegularExpression基础上的特殊模式匹配、搜索及替代。

接着讲演介绍了一个非常有意思的概念:语言taging,即给语言文字做各种标签和分析,这是属于研究但也有广泛用途的课题。这种标签可以是句子中的结构,如单词,空格,标点,语言,词性,语音种类,人名,地名,组织名,词根等。苹果提供NSLinguisticTagger,其中有许多有用的API可用来进行语言分析。

在上面的分析基础之上,该讲演者认为对于软件开发来说,文字处理主要的应用是:

  • 改进语法检查和更正
  • 提供语言的各种信息
  • 鉴别文字中的名字
  • 改进indexing

针对上面的问题,讲演中有实例示范。苹果提供了许多class和相应的API支持,比如语法检查和更正,这些功能在苹果的用户界面中可以自动提供支持。

129 - Practical Drawing for iOS Developers


本讲演介绍iOS中如果使用Core Graphics API。讲演首先以一股票趋势图作为例子,说明画图的方法。比如画线,背景图像,显示格子,线中图像或颜色的填充,加文字等。

实现所有上面的画图都可以使用Q,即Core Graphics,来实现。这里用Q是因为Core Graphics是建立在Quartz 2D和Quartz Compositor基础之上,这两个是苹果图像的核心平台。

接着讲演介绍了如何填充view内部的颜色和实现线性变化的颜色。

虽然苹果中的图像处理是C语言写成的API,但是Core Graphics大多数是通过UIKit来提供支持的,讲演中介绍了如何实现斜度的线性变化颜色。

讲演介绍了画图的基本概念,如UIKit的坐标系统,从左上角开始向下和右伸展;而Quartz是几何系统,即用来描述画图。

在iOS中Points是抽象的概念,与分辨率无关;而Pixel是与硬件有关。讲演中比较了两者之间的关系。Core Graphics自动转换之间的关系,因此建议采用Point,比如10-point是可以阅读的字体,44x44的方框是基本接触点击的尺寸,320x480 是iPhone和iPod Touch的屏幕尺寸。

CGContextRef是C语言的API,可以用来表示路径,颜色点,线的宽度,填充颜色,虚线,影子,曲线,合成的方式,转换矩阵等。讲演中介绍了这些相关的API。

讲演中强调不要call当前的内容来画图,而是让苹果系统在适当时间来call你的编码,你只需要告诉系统当前的view需要重新显示,如:[[tagGR view] setNeedsDisplay]。

讲演介绍了如何创建一个BitMap Context,及其相关的API。

讲演介绍了有关Path的基本概念,如何画线,如何通过封闭的路径来改变照片的直角为圆角。

讲演介绍了如何画文字,加影子,并有实例演示。

最后介绍了UIImage和图案格式(Patterns),如何将一个简单画出来小的图像重复创建一种图案格式。

No comments:

Post a Comment