CS193 可能是最著名的iOS開發(fā)教程了。本系列作為Standford計(jì)算機(jī)系的課程,從2010年一開始就大受歡迎。在許多公開課網(wǎng)站都可以看到翻譯后的版本。這個(gè)課程主要是講解一些基本概念和UI設(shè)計(jì),并不是一個(gè)iOS開發(fā)大全。比如關(guān)于游戲開發(fā)必備的SpriteKit,SceneKit和GameplayKit等內(nèi)容就沒有涉及。但仍不失為iOS入門學(xué)習(xí)的最好材料。學(xué)習(xí)這個(gè)課程至少要有面向?qū)ο缶幊痰幕A(chǔ)。
最新的一期講座基于iOS 10、Xcode 8 和 Swift 3.0。如果看舊版的話,多少在最新的環(huán)境里會(huì)遇到些問題。相關(guān)的視頻可以通過iTunes-U 下載觀看,這版是有英文字幕的。想學(xué)的同學(xué)可以立刻開始,不要等中文字幕了。
本系列筆記是我自己觀看這個(gè)教程的時(shí)候的所做的總結(jié),可以幫助大家更好的掌握課程的內(nèi)容。
本講簡(jiǎn)介:iOS 10, Xcode 8 和 Swift 3 介紹。為了方便學(xué)生的理解,CS193教程里面的所有演示都會(huì)從頭開始。本講的demo是一個(gè)計(jì)算器。
這一講的內(nèi)容和2016年版幾乎沒有什么不同。只是所有的演示都是在最新的環(huán)境里進(jìn)行的。
iOS的分層架構(gòu)
從上至下iOS 可以劃為四層。目前有個(gè)大致印象就可以了。下面是各層的一些重點(diǎn)模塊
Cocoa Touch => Map Kit, Camera, Core Motion, Web View, Localization
Media => Audio Recording, Video Playback, Core Animation, Quartz(2D)
CoreService ?=> Networking, Threading, SQLite, File Access
Core OS => Kernel, Sockets, Security, File System, Power Management
除了最下面一層外,了解這些模塊可以讓大家對(duì)未來要學(xué)習(xí)什么有個(gè)大致的印象。:)
XCode
XCode是Apple提供的iOS/OSx開發(fā)一站式解決方案。經(jīng)過這些年的發(fā)展變化,幾乎所有開發(fā)所需的功能都已經(jīng)被集成進(jìn)來了。另外因?yàn)閄Code Ghost事件的影響,從8.0開始第三方插件也都被禁止了。但一些流行的插件功能,如“Add Documentation”也被內(nèi)置了。當(dāng)然如果還想用第三方插件也是有辦法的,但不建議大家去折騰了。
視頻中,老師會(huì)帶領(lǐng)大家瀏覽XCode中的布局結(jié)構(gòu)。大家可以花些時(shí)間自己多試試,一定會(huì)有收獲的。XCode可以自定義布局,詳見菜單中的“New Behavior”。為自己常用的布局定一個(gè)一個(gè)快捷鍵,會(huì)非常方便。
在XCode中可以對(duì)文件進(jìn)行分組,把相關(guān)的文件放到同一組里面。比如資源組,控制器組等等。但這種結(jié)構(gòu)并不會(huì)體現(xiàn)到實(shí)際的文件系統(tǒng)中。
XCode 集成了對(duì)Git的支持。建議大家一開始就用Github或Gitlab來管理自己的代碼。
Swift 3.0
講座中并沒有刻意地去介紹Swift 3.0和以前版本的異同。始終都是講的最新版。
Swift 中函數(shù)的參數(shù)可以定義兩個(gè)名字,一個(gè)外部用,一個(gè)內(nèi)部用。如果不想被使用可以用 "_"。但只能用于第一個(gè)參數(shù)。關(guān)于Swift的語法,大家不必硬記,在實(shí)踐中會(huì)逐步掌握。另外任何教程都可能會(huì)過時(shí),要多利用XCode中的playground來學(xué)習(xí)驗(yàn)證。
類/結(jié)構(gòu)中的屬性有存儲(chǔ)屬性和計(jì)算屬性(Computed Property)兩種,后者不占用數(shù)據(jù)空間。
其它:
如果不涉及UI,代碼中可以只導(dǎo)入 Foundation。UIKit 中包含F(xiàn)oundation。
"_" 可以在各種場(chǎng)合下替換變量/常量名,表示該變量/常量可以被忽略。
成員變量如果不是Optional類型,必須要有初值。否則需要提供構(gòu)建函數(shù)(initializer)。
在視頻中經(jīng)常可以看到屏幕左下角顯示當(dāng)前按下的功能鍵。這個(gè)效果可以通過“Enable Sticky Keys"來實(shí)現(xiàn)。(在System Preference中搜索 Sticky)
本講用到的快捷鍵:
?+Click ? ? ? ?//查看定義,非常有用
?+I ? ? ? ? ? ?//整理代碼的縮進(jìn),非常常用
?+P ? ? ? ? // π
?+B ? ? ? ? // Build
?+R ? ? ? ? // Run
??H ? ? ?// 相當(dāng)于按下模擬器的Home鍵
?+1/2/3/4/5 ? ? ? //縮放模擬器屏幕大小
本講的閱讀作業(yè):https://swift.org/documentation/
一點(diǎn)題外話。Paul Hegarty 并不是蘋果公司的員工。但是和Jobs一起工作過!