我看 WWDC 2015

說說今年 WWDC 比較重要的東西吧:

Swift 2.0

蘋果自己埋頭苦幹做了 Swift 幾年,在上年突然推出把全世界嚇了一跳。雖然贏得了開發者的掌聲,但是它的不穩定和一些語法古怪的部份讓很多開發者都停留在 Objective-C。今年蘋果就是要跟大家說他是認真的,也解決了一些重要問題:

  • 解決了大部份的 compiler bug ,也把許多謎一樣的 compiler error/warning 改成有用的建議
  • 在 Objective-C 中加入了 nullability 和 generics 。這讓 Swift 使用 Obj-C 時多餘的 optional 減到最少。
  • 錯誤處理:加入了 try/catch 錯誤處理機制,巧妙地兼容 Objective-C 的 error pointer,不用再用 NSErrorPointer 了。
  • 甚麼是 Idiomatic 的 Swift?大家探索了一年,不同的人有不同的方向 (functional? reactive? objective-c 式?) ,但 Apple 這次用了一個 session 講他們心目中的理想 Swift 編程方式。

{<1>}

watchOS 2.0

第一版的 WatchKit 用途十分有限。與其說是 Apps 還不如說是提供通知和有一點互動的幻燈片。由於甚麼東西也要經手機往返,所以效能十分差勁。可以說 watchOS 2 才是真正的 Apple Watch -- 兩者那差別就跟初代 iPhone 和 iPhone OS 3.0 一樣大。現在所有 Apple Watch 開發者也躍躍卻試,今年將會有些真正有趣的 Watch App 吧? (我自己是還沒有想到有啥用啦...)

CloudKit JS / Web Service

去年推出的 CloudKit 可說是一個一點也不實際的東西。雖然叫 CloudKit 但所有資料只能在 App 裡存取。比如說我想做一個新聞 App ,把 CloudKit 當作資料庫發佈新聞。雖然可以做得到,但這個 App 必需包括編輯和滙入新聞的功能,想做個 web app 去更新或處理批次的功能基本上是不可能的。

{<3>}

今年 CloudKit 的更新加入了 CloudKit JS 和 Web Service ,可以用 Web App (包括純 JavaScript) 去存取 App 資料。Apple 甚至用它寫了 Flipboard 的競爭者 News 和 Notes.app 的 Web 版。

雖然 CloudKit 不能跟 Parse / Firebase 等全平台的東西比較,但用 CloudKit 避免了 「PAAS 倒下」的可能性 (代價是不能在 Android 使用...)。如果是純 Apple 的 App 開發者,考慮到它不用維護伺服器、超便宜的價格和近乎無上限的 scalability,它絕對是一個可考慮的方案。

iPad 新 Multi Tasking

自從 iOS 的機器越來越強,他們的 Multi Tasking 功能也跟著進步。這次有其待已久的 Split View (只限 iPad Air 2)、Slide Over 和畫中畫。就算沒有 Air 2 ,可以快速切換兩個 App 讓 iPad 的可用性大大提高了 。

{<4>}

Xcode 7

每年 Xcode 都會推出新版本,但這次的更新十分有趣。

  • UI Testing - 自動錄製使用 App 的場境,Xcode 會自動寫出相應的 Swift/Objective-C 源碼。
  • Interface Builder - 一個用 Nib/Storyboard 的 UI 如果要微調 -- 比如說加一個 view 在一串 views 中間 -- 通常也是很痛苦的事。配合 Auto Layout / Stack View 的更新,現在維護 layout 時簡單多了。
  • Storyboard Reference 可以把一個 Storyboard 分拆成多檔案,使用時跟人手分拆一樣,但在 IB 裡可以照常使用。

{<5>}

沒有硬件

我知道這是開發者會議,但今年居然真的沒有新硬件介紹。沒有可以開放 App Store 的 Apple TV也沒有 iPad Pro,真是失望。不過至少在 WWDC 在隱藏的訊息裡大家發現兩者仍然有希望,也許會在年末有更多資料?

總結

相對於 iOS 7 的新介面和 iOS 8 的 extension,iOS 9 是改進的一年。一些佈局已久的東西都開始成熟了,這年將會收成的一年吧。