swift語言發(fā)表已經(jīng)快四年時(shí)間了,現(xiàn)在也已經(jīng)更新到swift4了,相對(duì)已經(jīng)穩(wěn)定,同時(shí)Objective-C向swift的語言轉(zhuǎn)換杖们,也是IOS開發(fā)的大勢所趨悉抵,為了不被時(shí)代所拋棄,也為了增加自己的知識(shí)儲(chǔ)備量摘完,決定開始學(xué)習(xí)swift
曾經(jīng)在學(xué)習(xí)Objective-C的時(shí)候也是通過白胡子老頭的“斯坦福大學(xué)公開課”學(xué)習(xí)的姥饰,所以在想要學(xué)習(xí)swift的時(shí)候,第一時(shí)間想到的也是這個(gè)老先生的課程孝治,沒想到搜索了一下媳否,還真的有(點(diǎn)這里),只不過是swift3的課程荆秦,不過也沒什么關(guān)系,因?yàn)閟wift4跟swift3相比力图,更新的東西并不多 步绸,不妨可以先學(xué)習(xí)swift3,當(dāng)語法與基礎(chǔ)知識(shí)等都了解了吃媒,能夠順利使用了之后再去了解swift4的相關(guān)更新也不遲瓤介。
由于每天下班比較晚,所以可能更新每天學(xué)習(xí)的東西比較少赘那,時(shí)間也不固定刑桑,但是重在積累吧。
也沒發(fā)過什么博客募舟,所以對(duì)排版也沒什么心得祠斧,主要用于記錄自己的學(xué)習(xí)軌跡和知識(shí)點(diǎn),望海涵拱礁!
在每一項(xiàng)知識(shí)點(diǎn)后邊都會(huì)掛上一個(gè)此相關(guān)知識(shí)點(diǎn)的比較詳細(xì)的解釋的鏈接琢锋,以供之后查看
變量和常量的聲明 相關(guān)詳細(xì)鏈接
1、變量的聲明
var digit : String
注:一般可以取消定義的類型呢灶,寫成var digit
吴超,因?yàn)閟wift會(huì)根據(jù)上下文進(jìn)行類型推到
2、常量的聲明
let digit
在聲明時(shí)區(qū)分變量和常量很重要的原因是鸯乃,當(dāng)你改變一個(gè)常量的時(shí)候鲸阻,編譯器會(huì)給你報(bào)錯(cuò),并且能確定值在之后一直不會(huì)變化的時(shí)候缨睡,就定義為常量
方法函數(shù) 相關(guān)詳細(xì)鏈接
下方就是swift方法的定義鸟悴。例子:
① func drawHorizontalLine(from startX: Double, to endX:Double, using color: UIColor) -> String{
distance = endX - startX
}
② @IBAction func touchDigit(_ sender: UIButton) {
}
- 1 、①中的
startX奖年,endX遣臼,color
為方法的形參:函數(shù)內(nèi)部的形參名稱,只在函數(shù)內(nèi)部使用拾并,例如方法內(nèi)部的:distance = endX - startX
- 2揍堰、①中的
Double鹏浅,UIColor
是這個(gè)參數(shù)的類型 - 3、①中的
from屏歹,to隐砸,using
是方法外部使用的實(shí)參標(biāo)簽-
_
表示不需要標(biāo)簽,調(diào)用時(shí)不用寫標(biāo)簽蝙眶。例如②方法可以這樣調(diào)用:touchDigit(someButton))
季希。一般在標(biāo)簽名存在于函數(shù)名或者參數(shù)類型中時(shí),使用_
幽纷。補(bǔ)充:_
一般最多用于第一個(gè)參數(shù)的標(biāo)簽式塌。 - 調(diào)用函數(shù)時(shí),使用的是這些外部名稱友浸。例如:
drawHorizontalLine(from: 5.0, to: 8.0, using: UIColor.blue)
- 并且這些外部實(shí)參標(biāo)簽在調(diào)用時(shí)是不可缺少的峰尝。例如:
drawHorizontalLine(5.0, 8.0, UIColor.blue)是不允許的
-
- 4、-> String為返回值
字符串的拼接 相關(guān)詳細(xì)鏈接
使用\()
進(jìn)行拼接收恢,括號(hào)中可以放任何能用字符串標(biāo)識(shí)的內(nèi)容武学。例如:
var digit : String = "example"
print("\(digit) was called")
可選類型 相關(guān)詳細(xì)鏈接
- 1、可選類型值有兩個(gè)值:有值和缺省值伦意,當(dāng)有值的時(shí)候火窒,會(huì)存在一個(gè)關(guān)聯(lián)值,關(guān)聯(lián)值可以是String驮肉,Double等等等等熏矿,當(dāng)只想獲取其關(guān)聯(lián)值的時(shí)候,需要進(jìn)行解包
- 2离钝、創(chuàng)建的UILabel屬性是可選的
var display: UILabel!
曲掰,是因?yàn)楫?dāng)用戶界面剛顯示出來的時(shí)候,系統(tǒng)需要一點(diǎn)時(shí)間關(guān)聯(lián)控件和代碼奈辰。所以剛加載的時(shí)候栏妖,它是缺省值的。關(guān)聯(lián)完之后就是有值的了奖恰,之后一直都是有值的吊趾,這就是這個(gè)“!”的作用 - 3瑟啃、當(dāng)賦值給可選類型的時(shí)候论泛,并不需要解包,直接賦值就可以了
- 4蛹屿、另一種安全的解包方式屁奏,推薦使用!
//(如果sender.currentTitle有值错负,那么把關(guān)聯(lián)值賦值給mathematicalSymbol)
if let mathematicalSymbol = sender.currentTitle {
print(mathematicalSymbol)
}
類型轉(zhuǎn)換 相關(guān)詳細(xì)鏈接
這的類型轉(zhuǎn)換只記錄最基礎(chǔ)的一種坟瓢,其他的方式再相關(guān)詳細(xì)鏈接中查看
把其他類型轉(zhuǎn)換成字符串類型:String(Double.pi)
其他基礎(chǔ)類型同理
計(jì)算型屬性 相關(guān)詳細(xì)鏈接
把代碼放在屬性的后面的大括號(hào)里勇边,就能實(shí)時(shí)計(jì)算變量的值,而不是依靠存儲(chǔ)的值.
所以可以有代碼負(fù)責(zé)計(jì)算獲取的值(get)折联,也可以有代碼處理賦值的情況(set)
例如:
var displayValue : Double {
get {
//當(dāng)displayValue在等號(hào)右邊的時(shí)候粒褒,調(diào)用這里
return Double(display.text!)!
}
set {
//當(dāng)displayValue在等號(hào)左邊的時(shí)候,調(diào)用這個(gè)(newValue就代表要賦值的值诚镰,它和變量類型相同)
display.text = String(newValue)
}
}
雜項(xiàng)
- 1奕坟、swift要求所有屬性都要初始化,但是可選類型是例外清笨,因?yàn)榭蛇x類型可以不賦值月杉,因?yàn)槌跏蓟臅r(shí)候被自動(dòng)初始化為nil,nil表示缺省值抠艾。當(dāng)然也可以手動(dòng)初始化給一個(gè)初始值苛萎,但是如果沒有的話,就是缺省值