The Old Blog Archive (Traditional Chinese), 2004-2009

ObjectiveFlickr 進度更新

這幾天繼續在改寫 ObjectiveFlickr 。幾個重要的變化:

  1. Source trunk大地震。許多檔案搬了家。新的 Xcode project file 可以一次 build 完 framework (yes! ObjectiveFlickr.framework is there!) 和 demo apps。編出來的 ObjectiveFlickr.framework 可以獨立放在 /Library/Frameworks 也可以嵌入你所寫的 app 中使用。
  2. Source code大地震。三個 class 全部重寫了一遍,主要是把 application context (API key, shared secret 及 auth token) 分成一類(連同 URL 生成),遞送 HTTP request 的工作再歸成一類(這次加入了 HTTP POST 支援了),另外 uploader 也寫得再清楚一點。
  3. 抽取 XML payload 資訊的功能,從這一版中被拿掉了。主要希望讓 request wrapper 能專心做 payload delivery,因此甚至連 Flickr error block 的解讀工作都不做了。研究了一下 BadgerFish 以及其他 XML-JSON 互轉的慣例,可能也要依樣畫葫蘆。
  4. 考慮了一圈,在目前這個層次上(「低階」的 API),一切都還是以 async 的方式撰寫。可能要到再往上一層的 API ,才會有 blocking call ,也就是做完一個 HTTP request 才做下一件事。大家都知道原因:在 GUI 程式裡寫 sync/blocking call 反而是比較困難的。
  5. 捏指一算,目前 Flickr API 竟然有 95 個 method !
  6. API method 多,傳回來的 XML payload 也是種類繁多。

總之,目前還需要再往上架一層,才可能看到更多簡單的 demo app 出現。目前是希望把 Flickr authentication 也做成一個 sheet package ,只要把 sheet window (註)調出來用就可以處理掉 Flickr 複雜的 authentication work 。不過這個部份的 abstraction and wrapping 遠比寫框架困難就是了。UI 真不是件容易的工作。

註:OS X 的 sheet window ,最近研究才知,並不是嚴格意義上的 modal window。因為 sheet 在 on focus 時,並不真的 block 住 parent window 的 run loop (event loop) …… OS X 的 run loop 架構,其實也挺亂七八糟的 -_-。

Comments are closed.