我目前学习WWDC2011视频节目全部学习完毕,但我的笔记越来越慢。不过我还是想继续像我学习视频一样,在回头重新浏览每个讲座的PDF讲演概要讲稿,整理我自己的学习笔记。 Session 119 - Resume and Automatic Termination 恢复和自动中止是苹果Lion引入的新功能。我认为苹果在为用户提供一个非常爽苹果电脑方面动了许多心机。这场技术讲座,从技术的深度剖析了苹果操作系统设计方面的一个技术点,由此我们可以看出苹果在技术深层方面做了许多扎实的工作。 虽然目前电脑的硬件越来越先进,CPU的速度和内存不仅更为快和多,而且成本也越来越低,但是苹果却与微软和许多其它公司不同,在操作系统的很多细节方面,苹果尽量腾出硬件的所有资源,让用户能充分利用这些资源。软件的恢复和自动中止软件做了一个基本的工作,这样操作系统将会检测出这些运行的软件,如果长时间处于没有用的状态,操作系统就会将这些长时间不用的软件自动关闭,这样可以腾出电脑的资源让用户更爽地使用其它软件。由于这些关闭的软具有恢复原来状态的功能,如果用户需要,再打开这些软件将会会到原来的状态。而在微软的窗口则根本就没有考虑,也没有这些基本的API支持,试想如果用户打开数个、数十个、甚至上百个软件,系统可提供的资源肯定变为珍稀保护动物了,而用户使用电脑将会感到越来越慢。 苹果在OS方面这些新的支持实际上是将iOS的成功经验移植过来的。iOS设备因空间的限制,硬件在CPU和内存方面的资源十分有限,因此iOS对软件要求特别高。比如如果启动速度太慢,10秒内不能启动,苹果操作系统将会将其毙掉。如果系统可用的内存减少到一定极限,苹果将向所有正在运行的软件发出警告,如果软件不释放资源,苹果将会按照用量的大小将运行的软件关闭。过去在苹果OS上则没有这种功能,现在苹果在OS吸取iOS的成功经验,在Mac上也具有操作系统自动关闭软件的功能,但采取的方式不同,因为Mac的资源比较丰富,因此提供API让软件能够恢复和自动关闭,这样操作系统可以将长期不用的软件自动关闭,让用户使用苹果电脑有更充分的系统资源。 我举一个简单的例子,如果公司由你请一个外来的专业人员处理某项工作,你然后处理你的日常工作。如果这位工作者完成任务之后,不是需要你不时去检查是否完成工作,也不需要你将他送出公司,而是公司的安检或管理员自动发现这位外来人员没有做任何工作,则会请出这位闲置人员。如果你发现又需要使用这位专业人员进行工作,你可以再请回来,该专业人员具有恢复能力,能够回到公司即刻开始接着工作。 在传统的操作系统中,如果用户打开数个软件,这些软件运行的软件必须由用户来关闭,否则这些软件将会永远留在系统处于运行状态。苹果则主动采取不同的策略,提供API让这些软件设计人员设定其具有恢复功能,并能通过API可以让操作系统知道软件具有自动关闭的功能,这样操作系统可以将这些长期不用的软件自动关闭。这些细小细节和技术上的周密设计思考,体现出苹果的特殊新功能和优越性。 该讲座介绍了这些新的API使用技巧,鼓励软件开发者在设计软件方面考虑到做一个苹果系统的好的公民,即启动这种自动恢复的功能,决定是否支持自动关闭。自动恢复从编程角度来说,如果没有操作系统和平台的支持,这是一个非常复杂的难题。但苹果提供简单的API,在打开的View或窗口中只要设定支持自动恢复,软件人员不必顾及这些复杂的恢复过程。我估计苹果从操作系统的底层,自动将窗口的状态用archiev的方式存储起来,这样能够在重新启动之后从archive库中取出窗口原来状态的数据,自动恢复到原来的状态。 该讲座详细分析了自动恢复的过程,并有实例演示。 虽然这些API给软件开发者提供了非常简便的API接口,但软件开发者还是需要一个学习的过程,讲演者十分强调软件开发者要进行许多测试,保证软件具有这些功能。有些复杂的情况,程序编码也会比较复杂些。 自动恢复、自动存盘及Versions是一个有机结构。这样解决了不需要用户save的琐碎工作,操作系统提供了存储数据和窗口的功能。 在讲座最后结束语中,演讲者自己提问,下一代操作系统未来还会有什么新的功能呢?他说也许将来软件不再需要Quit即退出的功能,因为操作系统可以自动中止软件的运行,因此用户就没有必要亲自关闭软件了。这些琐碎的过程,软件开发者和苹果的操作系统都可以让电脑来处理了。 Session 120 - View Based NSTableView NSTableView是iOS上最常用的用户界面,它是采用一种表格方式来显示一系列数据。本讲座介绍如何在Mac OS上使用这种具有非常强功能的表格用户界面,实际上,苹果电脑上的NSTableView比iOS的相应view将有更多的功能,可以表示各种复杂的用户界面。比如说,iOS只能显示单列表格,OS上可以有多列的表格,并且可以支持拉拽移动到窗口之外或从外拽入,以及相应的动画效果等。本讲座内容为: - 表格的结构(Layout)
- 如果创建(Construct)
- 数据联系(Bindings)
- 表格内容的特殊化设计(Customizing)
- 拉拽(Drag and drop)
- 动画(Animation)
OS的NSTableBiew结构比iOS复杂些,但也提供更多的功能,比如NSTableRow和NSTableColumn用于构造整个表格,每个格cell可以用NSTableCellView来更容易描述cell的内容,但NSTableCellView是可选择的,如果构造复杂的内容,不必使用这个view。 与iOS的NSTableView一样,NSTableView的构造主要为两个部分的delegates,一个是数据来源接口(dataSource implementation or delegate),一个是表格的特殊接口(NSTableView delete)。苹果的许多class都是采用delegate的方式来接入用户的特殊编码,这种设计结构十分简洁,给编程人员提供执行的特殊内容。这种结构相当于C++的abstract methods或.Net的interface。苹果的delegate有其特点,有些delegate是必须implement,有些则是可选的,即可用可不用。苹果的许多内部class都是采用这种技巧提供API接口。讲座详细介绍了如何使用这些接口。 讲座介绍了如何用Nib方式构造NSView或表格view。Nib是将View用XML方式来archive用户界面。这样可以利用视觉的方式来设计表格的内容。这种方式不仅可以减少编码,而且自动回收利用表格内部cell的object。 讲座介绍了如何利用表格来进行编辑。 讲座介绍了各种数据联系的方法,有简单的,也有复杂的。在Xcode 4中,表格的IB设计有objectValue的binding设置,这样数据可以自动从数据库中取出,装载在表格之中。 Mac OS的表格有许多特殊的功能,比如多项选择,鼠标移动(Hover)的效果,特殊的分隔(Custom Separator),提供特殊的行显示(Custom row view),讲座有详细讲解。 讲座提过图像的拉拽来介绍如何处理拉拽的动画效果,以流程的过程方式介绍了写程序一些技巧。 最后的动画部分,详细介绍了使用哪些表格的API来编写插入,删除和移动的编码。 我的RSS |