Swift iOS :個人這5個月的學習過程

2015年,我也去看了下objc,第一感受很很差,C語言和objc的擴展在一塊兒,特別混亂,當時感受:git

  1. 都是函數,C的函數和objc的函數建立和使用差異很大,而且混合在一塊兒
  2. objc函數帶着參數標籤的,函數長的受不了
  3. 即便是第一步最小的app,也得了解設計模式,它一開始就出場,叫作delegate

因此我認爲objc語言比較原始,沒有隨着大流和其餘語言一塊兒演進,暴得大名,其實不符。加上UIKit的封裝作的比較差。寫了個小app後,我隨即放棄。程序員

等到swift出來,2016年初,我略看了下,感受好多了,好歹語言顯得和主流的畢竟接近。並且還有相似腳本的強大的對象字面量,因而開始真的學習。坎和objc相比,少了語言的障礙,可是:github

  1. UIKit的函數名依然帶標籤,依然比較長,你能夠感覺下AppDelegate的第一個函數:
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
  2. 依然須要瞭解設計模式,首先仍是delegate,MVC。滿篇的ViewController。

可是我仍是學了。寫了一些筆記都在github上。當時找了7-8本書,感受太囉嗦,充斥者和當前要了解的東西不直接相關的內容,以及大量的和Storyboard相關操做的截圖。這些截圖讓我心煩。我好歹是一個程序員啊,寫代碼看代碼,跑代碼,很差嗎。看什麼圖,又不是學PS。
2017年,我決定把這個事兒撿起來,個人作法是上來直接看Apple的開發者文檔。固然,難度確定是有,畢竟這個東西是面向UIKit自己的,講究的是說明白自己,並且一向的,官方文檔的例子都比較少。我看了這個文檔中的UIKit,Foundation部分,看了不少遍。看了當天就要筆記,筆記保證都是有一個本身編寫的能夠跑得通的案例。這個案例必須一次粘貼到IDE內,而後就能夠RUN。一個個控件的作下來,而且發佈在掘金上。確實看不懂,查了google和SO也沒有結果的,就打印出來,反反覆覆的看。swift

這時候我以爲腦殼裏面已經都是知識了,要爆了,必須得輸出了。我而後又找了一個App,是開源的swift編寫的v2ex客戶端,Finb/V2ex-Swift。我翻了幾個app,以爲這個代碼寫的相對簡單,規整,訪問的論壇我也比較熟悉,因而決定從它這裏,再來一遍個人所學,印證下個人知識。這個app除了代碼比較清潔,結構簡單外,也有用了很多第三方的包。好比上拉下拉控件,1password擴展,Keychain擴展,alamafire網絡擴展等開發一個App幾乎必備的包,能夠一併學習。
地址在此:TofJ 的我的主頁 - 掘金,不知不覺的,竟然積累了40篇了。在掘金寫博客3月,騙了1500的關注呢。我一直秉承幾個原則:設計模式

  1. 說什麼就集中說什麼,和當前要關心的無關的,不談
  2. 代碼貼入IDE,覆蓋AppDelegate.swift,而後就能夠RUN,保證能跑,不須要你在文章裏面七拼八湊的
  3. 堅持用代碼,不用StoryBoard。用了SB,就直接進入截圖黨,操做員,一張圖細節太多,可是看過了,就毫無內容。我不反對使用SB作設計,可是極爲反對使用SB來學習UIKit的UI設計

我在閱讀Finb/V2ex-Swift代碼中,也在按本身的想法作了一些重構:網絡

  1. 大意是提煉公共代碼,把代碼搬來搬去的放在更加合適的地方,封裝了簡單的基礎類,好比TableView,這個最經常使用的控件的封裝。
  2. 固然,我一直反對使用delegate,而是想要轉換它爲Property-Method-Event的模式,因此封裝的底層固然仍是delegate,高層就儘量引入Event。
  3. 在有些地方爲了充分理解,可能須要抽取ViewController代碼到單獨的工程中來作驗證。這個作法,讓我吃了很多苦頭。就是說你抽了ViewController,隨即它的七大姑八大姨也跟着來,你們都是耦合在一塊兒的。爲了之後我作這個工做簡單,我使用消息機制,把全部的ViewController的所有打破,原來的互相耦合,所有經過一箇中心類,經過消息發送和接收處理變成了單純的星型耦合。
    我把個人工做放到了這裏。1000copy/fin 。這裏的代碼基於Finb的貢獻,感謝他的分享。這個代碼我但願它更好閱讀,也更好拆分,分而治之。

對Swift的學習依然繼續。我但願爲它作出一個框架,有了這個框架Swift就像C#同樣好用。app

相關文章
相關標籤/搜索