泊學
泊學 https://boxueio.com/ --- iOS 全棧開發高清視頻網站。
泊學目前有 Swift PHP iOS 三個模塊,共 1100 分鐘視頻資料,其中 Swift 模塊 12 個課程系列,102 節課,共 750 分鐘,視頻清晰度 1080P,部分視頻已經更新至 4K,每一篇視頻都配備相同內容的泊閱文檔。下圖為課程截圖
我從周一開始觀看 Swift 系列視頻,周五剛好看完,周末來寫寫個人體驗,給其它 Swift 學習者作參考。
產品體驗
首先是產品體驗,泊學設計我還是很喜歡的,沒有雜亂的東西,只是一個簡單純粹的視頻學習網站,視頻資源清晰度非常高,1080P 的視頻讓每一行代碼都能看的十分清楚,至于更新成 4K 的視頻資源,更是讓我在 retina 屏幕上爽了一把,我的顯示器的分辨率是(2880 x 1800),而 4K 視頻的分辨率為(3840 x 2160),體驗就是我仿佛在看著自己編寫代碼。
視頻的加載非常流暢,從選擇視頻到播放,感覺不到任何停頓,不過沒有清晰度的切換,對于某些網速慢的同學,可能不會太友好,雖然可以選擇下載視頻,但得一個一個下載,流程略微麻煩。
泊閱文檔對應每一篇視頻的博客,內容與視頻保持一致,所以也可以選擇通過閱讀泊閱文檔來學習課程知識。
泊學主要的學習還是得通過電腦,手機端并沒有 APP 支持,無法做到視頻緩存,網頁訪問的話小屏手機布局會有點問題,不過不影響功能的使用。得益于視頻資源的清晰,手機上觀看也十分舒適。不過沒有視頻緩存,想離線在手機端觀看得從電腦端下載,并通過 QQ 等應用傳給手機,實在有點麻煩。
如果是要在地鐵等場景學習,要不像我一樣有個流量卡, 5 分鐘的視頻消耗 50MB ~ 100MB,或者通過閱讀泊閱文檔。
內容體驗
泊學的免費章節都是每個課程系列的較為基礎的課程,為了讓大家更為了解泊學的視頻內容,我先對 理解引用語義的自定義類型 這個課程系列的 14 節課,做一個簡單概述。
class 引用類型和 struct 值類型的區別,較為基礎。
默認 init,Convenience init(便利初始化),Failable init(可失敗初始化)的介紹
講述繼承關系下的初始化,以及 Swift 的兩段式構造(自下而上初始化每一個屬性,再自上而下對每個屬性進行加工)
這篇屬于代碼設計了,講述 is a 繼承關系下的一些違背直覺的現象,例如基類是鳥,鳥會飛,這符合直覺,但有一天引入一只企鵝,企鵝是鳥,但企鵝不會飛,不注意的話就會出現錯誤。
has a 是一種組合模式,企鵝可以不繼承鳥類,而是擁有一個鳥類屬性,這樣就可以通過開放 API 讓調用者可以調用鳥類的除飛之外的其它行為。
講述 Swift 運行時動態派發以及靜態綁定。雖然繼承而來的方法調用是運行時動態派發,但方法的參數,確是編譯的時候根據調用方法的對象,綁定函數的默認參數。
講述了 Template method 和 基于函數的 Strategy 模式,基于 class 的 strategy 模式。用于重寫繼承方法的幾個替代方案,屬于知識面擴展。
較為基礎的講述 ARC 以及循環引用的發生途徑。
Swift 中使用 unowned 和 weak 打破循環引用。
圖文并茂的演示了 Closure 的循環引用是如何發生的,以及通過 Closure capture list 按值語義捕獲變量來解決這個問題。
但如果 closure 捕獲的對象仍就是引用類型,則可以通過在 capture list 里添加 unowned 或 weak 來打破這種循環。再介紹了一下 withExtendedLifetime 函數的用法,用于延長對象壽命,保證在 closure 返回之前,對象都是存在的。
講述 public,open,internal,fileprivate,private 五種訪問權限以及他們的使用場景。
介紹了 Swift 中的派發機制,Direct Dispatch 和 Table dispatch,這篇屬于原理篇,在反匯編結果中論證方法的派發機制。
Swift 的派發規則,也是原理篇,extension 中方法不能重寫的原因是因為編譯器會對其采用 direct dispatch。此篇還列述了這種規則所帶來的一些不符合直覺的現象,作為我們的擴展。
視頻內容并不是手把手教你學習 Swift,《The Swift Programming Language》依舊是最好的入門教材,雖然我的安卓同事跟著我聽也能聽懂,但也建議先從《The Swift Programming Language》入門 Swift 之后,再開始泊學 Swift 視頻系列。
每一個課程系列都會先快速過一遍前置基礎知識,然后開始知識擴展,然后探討深入,而這所有的一切,都是建立在代碼之上,視頻的內容一直是在編譯器上編寫代碼,不管是基礎,擴展,還是原理,都有源碼實戰支撐。另外作者的代碼寫的非常棒,可以下載它的源碼,學習他的編碼風格和思維。
泊學每個視頻時間都很短,全程一鏡到底,剪切掉無用的片段,但作者節奏比較快,聽者注意力需要集中。
還有一個《Reactive Programming in Swift》課程系列,對于想學習使用 RxSwift 的各種姿勢的同學,會是比較好的入門教程。
價格
視頻以及文檔只有較基礎的內容是免費的,其它的需要成為泊學會員,泊學會員有以下三種。
99 一個季度,學完 Swift 3 整個系列還是沒有問題的,算是最性價比的一個方案了,還送價值 18 元的 iOS 成長之路。
總結
每一個課程系列都比較獨立,可以根據自己的喜好選擇優先學習的課程,視頻比較短,但從頭到尾沒有停頓,節奏也比較快,對注意力集中有比較高的要求,走一個神的話,很容易就跟不上節奏。
雖是視頻學習,但并不能做到輕松接受信息,失去了視頻學習的優勢。認真學習的話,我更愿意閱讀泊閱文檔。會的我可以跳過,不會我可以好好看,看視頻進度是由作者控制,不能滿足所有所有人對詳略的要求。
所以盡管泊學是一個視頻學習網站,但我會選擇文檔為主,視頻為輔的學習方式 。因為泊學提供了完善的文檔,所以相比其它視頻學習網站,還是有它的優勢的。
從內容上看,學習 Swift,一本 《The Swift Programming Language》是遠遠不夠的,而 泊學 Swift 的內容,由淺入深,基礎 + 擴展 + 原理深入,是不錯的繼續學習的資料。不管是對于剛入門 Swift 的新手,想鞏固自己的基礎,又或者有一定 Swift 編程經驗的開發者,想擴張自己的視野,都會是不錯的選擇。