設萬維讀者為首頁 廣告服務 聯繫我們 關於萬維
簡體 繁體 手機版
分類廣告
版主:諍友
萬維讀者網 > 教育學術 > 帖子
學習蘋果WWDC 2011視頻講座的筆記(15)
送交者: 茶樹油之家 2011年08月06日19:28:57 於 [教育學術] 發送悄悄話
我現在學習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
0%(0)
標 題 (必選項):
內 容 (選填項):
實用資訊
回國機票$360起 | 商務艙省$200 | 全球最佳航空公司出爐:海航獲五星
海外華人福利!在線看陳建斌《三叉戟》熱血歸回 豪情築夢 高清免費看 無地區限制