ADZ 學習筆記

Ruby/Rails, Startup, Life

挑戰 3 天 20 小時 ios 超頻學習法

| Comments

原本以為 HTML5 mobile app 開發可以很輕鬆,結果花了三周發現 push notification 問題一堆、還有一些無解的 bug,如果要達到 容易維護 這件事情,也需要時間摸索,於是索性開始研究如何開發 native ios app。

上完 codeschool 的 try ios 課程後算是順利入門了,順便趁這時候分享自己如何開始一個新的語言。

語言 20% 框架 80%

之前研究 titanium 的經驗是如果已經學會至少一個程式語言後,新語言的學習曲線一開始通常不在 語言 而是 framework 上,雖然 swift syntax 看起來比 obj-c 簡單多了,但這次還是以資源較多的 obj-c 來學習 cocoa 這個 framework。

建立觀念 > 背 API

我想 建立觀念比背 API 重要 的原因是如果沒有觀念來輔助思考,很像是建立在基礎不穩的建築上蓋房子,不僅記憶沒有效率,一開始面對不熟悉的 syntax / API 反而會讓人想放棄。況且有些事情能用背的、但觀念只能靠摸索 => 想像 => 驗證慢慢建立。

作為一個 0 level beginner,我認為 codeschool 在 建立觀念 這方面規劃的非常好,課程一開始他就用 canvas paint brush paint 類比 window view controller view 讓你快速了解他整個 app 的構成元素,然後幫你建立 view 是 container 的概念、可以擁有多個 subView 並定義相對位置、屬性等等,並拿真實 app 來解構說明。

輔助工具

為了不浪費腦力背 framework API,於是就把每個題目完成的 code 用 dash 記錄在 snippets 上、附上註解,並裝了 ios docs 方便查 API。

抓重點記

除了 app 本身的運作觀念外,每個 view component 怎麼運作我認為是最重要的,以下是我 focus 最多時間了解、並整理出來的:

app_delegate

用來宣告 window / rootViewController。

UIViewController

基本功能的 view controller。

UINavigationController

用 array PUSH / POP ViewController 的觀念。

UITabBarController

  1. 必須 assign 一或多個 view controller
  2. 可以 assign UITableViewController / UINavigationController

UITableViewController

  1. UITableViewCell 會節省記憶體重複使用
  2. 至少必須實做 2 個 delegate / callback
    • 共有幾筆資料
    • each cell 的 delegate (決定 cell 要放什麼 data)
  3. table 可以 reload (非同步資料載入後重新 render table)
  4. 依照 indexPath.row 去找資料做事情

ScrollView

  1. 需要拖曳顯示的內容必須用 ScrollView
  2. 可設定拖曳方式 (左右, 上下 .. etc)
  3. 有一個設定是關於橡皮筋設計、高度的問題

AFNetworking

一套提供 synx / async 處理 http reqeust 和 render remote photo 的工具

應用

我想這些組合應該就夠完成晚鳥票第一版 app (除了 push notification 還需研究)、知道每個東西的運作流程後、還有課程中筆記的 sample code,剩下的問題就是拼裝出一個 app 了。

另外:應該會去找其他有 AFNetworking 功能,又可以直接把 rails convention 的 router 整個般到 app 上的 library。

總結

  1. 記憶留給大方向、細節丟到 evernote / gist
  2. 跳下一課前確保 掌握的觀念 能跟 筆記 串起來
  3. 筆記忌多又沒重點!

Comments

comments powered by Disqus