我现在学习WWDC2011的视频已经完成了400系列,今天进入最后的500系列。有关视频的笔记是越来越拖后了。不过我还是要继续做笔记,留作我将来参考之用。 Session 117 - Performing Calendar Calculations 日历和日期的计算是软件编程中经常遇到的技术问题,该讲座介绍了苹果的有关API,提供各种日期的计算,这样软件开发者可以避免需要考虑到各种不同日历和日期计算的复杂问题,夏令时,以及日期和时间的不同格式,使得软件可以覆盖各种不同地区的情况。 这些非常琐碎的问题的确是许多编程人员无法顾及的,比如说1月9日加一个月是2月9日,但1月30日加1个月则不是简单加一个月的问题,因为2月一般没有30日。按照一般算法应该是2月28日。2月28日加一个月应该是3月28日,那么1月30日加两个月是什么日期呢?苹果的API自动解决这个问题。所有这些非常琐碎和细节的问题,软件开发人员一般很难提出最佳的解决方法,苹果的API这为软件开发人员提供了便捷的解决方案,而且可以应用到各种不同地区的日历。因此苹果极力推荐使用苹果的日期和计算API。 苹果Cocoa有关日期计算的APIs - NSimeInterval
- NDDate
- NSCalendar
- NSDateComponents
- NSTimeZone
- NSDateFormatter
讲演中举了一个很简单的例子,从1月1日00:00:00循环加一天,许多程序都是加86400秒(一天的秒数),这在许多日子都是正确的,比如1月1日00:00:00加86400秒就是1月2日00:00:00,如此下去,但是3月13日00:00:00加86400秒之后,就是14月3日01:00:00,接着加下去就是15月3日01:00:00,如此下去,结果时间向上移动了一个小时。这个错误是因为美国的夏令时转变的时候,3月13日只有23个小时。如果采用苹果的NSDateComponents得到1 day的变量,用这个1 day的变量取代86400秒,则计算不会出现这种错误,苹果的时间计算自动发现夏令时,这一天的时间自动会调节到我们预期的目的。像这样的计算问题时非常难察觉到错误的。 该讲座还举了许多有关闰年、夏令时和地区不同的时间计算例子,其中有许多非常的情况下,日期的计算不是简单的数学算法,需要作必要的调整。讲座列出许多需要考虑的小技巧。 讲座讲解了新的有关时间的API,如NSYearCalendarUnit常数为普通日历的年,新的component类型: - NSWeekOfYaerCalendarUnit
- NSWeekOfMonthCalendarUnit
- NSYearForWeekOfYearCalendarUnit
- NSWeekCalendarUnit将会淘汰
最后介绍了如何正确使用NSDateFormatter将日期和时间转换为当地的日期和时间。 Session 118 - Making the Most of Multi-Touch on iOS 自iPhone推出之后,苹果就推出了有关触屏的API。该讲座回顾了触屏的基本概念和处理触屏的策略,列举了iOS中处理触屏的各种class。 首先以一个例子介绍了触屏的处理过程,触屏的基本API:touchesBegan, touchesMoved, touchesEnded, 和touchedsCancelled。 然后介绍了如何处理Touch的各种指法,用指法识别API得到各种指法。在软件设计中重要的一点上在Touch的整个流程之中,用适合的view来处理Touch。处理Touch的方式应该是使用苹果的delegates和notifications,这样可以在指定的UI接受到Touch,然后用相应的指法识别API来鉴别各种指法。 另一个应该考虑的重要之点是软件应该有处理Cancel或取消的情形,电话、突然提示、多任务转换和多任务转换指法等情况会中断Touch的过程。因此,软件应该考虑取消,应该有取消事件的接口,作出相应的取消处理。 我的RSS |