傳送門: 斯坦福CS193P課程 Ready烟瞧!Go诗鸭!
推薦斯坦福課程,筆記隨課程更新参滴,本篇和下一篇是已經(jīng)寫下來的强岸,從Apple備忘錄移過來,格式和數(shù)據(jù)展現(xiàn)的并不完整和整齊砾赔,因?yàn)槭枪P記蝌箍,就不花時(shí)間改展現(xiàn)了。
什么是iOS暴心?iOS系統(tǒng)層次
Cocoa Touch: Multi-Touch十绑,Alert,Core Motion酷勺,WebKit本橙,MapKit,Camera脆诉,Views等等甚亭,UI層提供展現(xiàn)所需控件和用戶互動(dòng)
Media:Core Audio,OpenAL击胜,JPEG/PNG/TIFF/PDF亏狰,Core Animation,Audio Recording偶摔,Video Playback暇唾,Quartz(2D)等等 ,提供媒體辰斋,視頻策州,音頻服務(wù)
Core Services:Collections ,Core Location宫仗,Address Book够挂, Net services, Networking藕夫, Threading孽糖,F(xiàn)ile Access, SQLite 毅贮,URL Utilities办悟, Preferences,Threading等等滩褥,提供核心服務(wù)
Core OS: OSX Kernel , BSD , Power management, Keychain Access, Security, Bonjour 等等病蛉,iOS基于Unix,底層C語言實(shí)現(xiàn)。
以上分層并不是很詳細(xì)铡恕,但其實(shí)我們沒必要糾結(jié)這些問題,一般情況這些層次里的Kit使用才是需要關(guān)注的重點(diǎn)丢间。
Swift語言特性:
Swift是一種強(qiáng)類型語言探熔,為了向后兼容Objective-C,Swift引入了一種untyped無類型
Swift中使用變量時(shí)需要正確的定義和區(qū)分類型烘挫,不同類型之間需要進(jìn)行類型轉(zhuǎn)換
實(shí)際使用過程中Swift表現(xiàn)出弱類型語言特性诀艰,是因?yàn)镾wift是一種強(qiáng)類型“推斷”語言,它可以猜出具體類型饮六,當(dāng)然也可以在定義時(shí)指定變量類型
Swift永遠(yuǎn)不會自動(dòng)進(jìn)行類型轉(zhuǎn)換
技巧:
使用mac鍵盤上按住option按鈕其垄,或在普通鍵盤上按住alt,將鼠標(biāo)移動(dòng)至變量定義上即可看到swift已經(jīng)猜出了正確的變量類型
擴(kuò)展知識:
Python是弱類型區(qū)分語言卤橄,JavaScript是弱類型區(qū)分語言绿满,Java是強(qiáng)類型區(qū)分語言,Objective-C是強(qiáng)類型區(qū)分語言
類變量窟扑,常量定義:
Swift中使用 var 定義變量喇颁,let 定義常量
Swift類中定義變量需要初始化,否則會報(bào)錯(cuò)無法編譯
Swift中初始化有兩種方法嚎货,一種是在init中進(jìn)行初始化橘霎,一種是直接在變量定義后直接=初始化值
Swift是強(qiáng)類型推斷語言,所以在定義變量時(shí)無需顯式定義數(shù)據(jù)類型
Swift時(shí)強(qiáng)類型推斷語言殖属,所以在定義數(shù)組時(shí)顯式定義數(shù)組類型時(shí)需要指定數(shù)據(jù)類型
變量后使用 ! 符號結(jié)尾則變量不需要初始化也不會編譯報(bào)錯(cuò)
技巧:
StoryBoard中鏈接對象和方法:
1.在StoryBoard中選擇需要鏈接的對象
2.按住鍵盤Ctrl+鼠標(biāo)左鍵拖拽到Swift代碼中
3.選擇Outlet或Action姐叁,如果需要?jiǎng)?chuàng)建數(shù)組則選擇Outlet Colloction
Swift中outlet變量一旦被創(chuàng)建,單改代碼(刪減變量單詞)會造成與UI鏈接丟失洗显,解決辦法是按住Common(Win鍵盤按windows圖標(biāo)鍵)+左鍵下拉菜單中選擇rename
擴(kuò)展知識:
Swift中l(wèi)et定義常量外潜,Java中const定義常量
實(shí)驗(yàn)代碼:
varemojis : Array = ["??","??","??","??","??","??"]
等價(jià)于
varemojis = ["??","??","??","??","??","??"]
但顯式定義Array時(shí)需要指定<數(shù)據(jù)類型>
觀察者模式
KVO,Key-Value Observer 觀察者模式挠唆,觀察者模式可以幫我們實(shí)現(xiàn)變量改變UI跟著變
實(shí)驗(yàn)代碼:
這里定義了flipCount變量記錄數(shù)字橡卤,當(dāng)變量改變時(shí)設(shè)置UI中l(wèi)abel里的數(shù)字
varfCount = 0{
? ? ? ? didSet{
? ? ? ? ? ? label.text = “Count : \(fCount)"
? ? ? ? }
}
擴(kuò)展知識:
觀察者模式的應(yīng)用非常廣泛,MVVM中監(jiān)聽模型變更UI等等损搬,Java中使用Interface實(shí)現(xiàn)Listener碧库。除了觀察者模式外還有很多其他模式,比如MVC巧勤,和其變種MVVM嵌灰。J2ee中常用的工廠模式,Objective-C代理(Delegate)模式颅悉,Android里常用的適配器Adapter模式
字符串拼接
Swift中使用 \(變量) 拼接字符串和變量沽瞭,不像Objective-C需要指定數(shù)據(jù)類型 %ld %s %lld %@ 等等
實(shí)驗(yàn)代碼
let fCount = 255
print(“Count = \(fCount)”)
方法定義
Swift 中形參定義 外部調(diào)用形參名 內(nèi)部調(diào)用形參名 : 數(shù)據(jù)類型 -> 返回值類型
形參第一個(gè)外部調(diào)用參數(shù)名可以是 _ 這樣就類似Objective-C的定義
因?yàn)樵贠bjective-C 中沒有外部形參名 參數(shù)定義為 :(數(shù)據(jù)類型) 參數(shù)名
由此可見Swift的可讀性更強(qiáng) 可讀性意味著高可維護(hù)性和協(xié)作性
下一篇:Swift 學(xué)習(xí)筆記 Lecture 2. Model - View - Controller