目錄
一,屬性
二璧亚,方法
三讨韭,下標(biāo)
四,繼承
一癣蟋,屬性
1透硝,存儲(chǔ)屬性和計(jì)算屬性
- 存儲(chǔ)屬性
1>它存儲(chǔ)在實(shí)例的內(nèi)存中
2>結(jié)構(gòu)體、類可以定義存儲(chǔ)屬性
3>枚舉不可以定義存儲(chǔ)屬性疯搅,因?yàn)槊杜e實(shí)例只存儲(chǔ)成員值和關(guān)聯(lián)值
- 計(jì)算屬性
1>它的本質(zhì)是函數(shù)濒生,不占用實(shí)例的內(nèi)存
2>枚舉、結(jié)構(gòu)體幔欧、類都可以定義計(jì)算屬性
3>只讀計(jì)算屬性:只有get
罪治,沒有set
- 實(shí)例
2丽声,延遲存儲(chǔ)屬性
- 在第一次用到屬性時(shí)才會(huì)進(jìn)行初始化
-
lazy
屬性必須是var
,不能是let
觉义,因?yàn)?code>let必須在實(shí)例初始化完成之前就有值 - 結(jié)構(gòu)體實(shí)例必須是
var
才能訪問lazy
屬性恒序,因?yàn)樵诔跏蓟?code>lazy屬性時(shí)需要改變結(jié)構(gòu)體的內(nèi)存
3,屬性觀察器
- 可以為
var
且非lazy
的存儲(chǔ)屬性添加屬性觀察器 - 屬性觀察器包括
willSet
和didSet
兩個(gè)方法 - 在定義時(shí)給屬性設(shè)值不會(huì)觸發(fā)屬性觀察器
- 在初始化器中給屬性設(shè)值不會(huì)觸發(fā)屬性觀察器
4谁撼,inout
- 實(shí)例
- 分析
inout
的本質(zhì)是地址傳遞
存儲(chǔ)屬性:將屬性的內(nèi)存地址傳遞給
inout
參數(shù)歧胁,在函數(shù)內(nèi)部直接修改屬性的值
帶屬性觀察器的存儲(chǔ)屬性、計(jì)算屬性
1>將屬性的值賦值給一個(gè)臨時(shí)變量
2>將臨時(shí)變量的內(nèi)存地址傳遞給inout
參數(shù)厉碟,在函數(shù)內(nèi)部修改臨時(shí)變量的值
3>將臨時(shí)變量的值賦值給屬性
- 匯編
update
函數(shù)
修改
width
屬性的值
修改
side
屬性的值
修改
girth
屬性的值
5喊巍,類型屬性
- 對比
實(shí)例屬性:通過實(shí)例訪問
1>存儲(chǔ)實(shí)例屬性:存儲(chǔ)在實(shí)例中,每個(gè)實(shí)例都有一份
2>計(jì)算實(shí)例屬性
類型屬性:通過類型訪問
1>存儲(chǔ)類型屬性:存儲(chǔ)在全局區(qū)箍鼓,整個(gè)程序只有一份(本質(zhì)是全局變量)
2>計(jì)算類型屬性
- 特點(diǎn)
1>用
static
定義類型屬性崭参,類還可以用class
來定義
2>必須給存儲(chǔ)類型屬性設(shè)置初始值,因?yàn)轭愋蜎]有初始化器來初始化存儲(chǔ)屬性
3>枚舉可以定義存儲(chǔ)類型屬性款咖,因?yàn)樗恍枰鎯?chǔ)在枚舉實(shí)例中
4>存儲(chǔ)類型屬性默認(rèn)就是lazy
何暮,并且是線程安全的
- 單例模式
二,方法
1铐殃,介紹
- 枚舉海洼、結(jié)構(gòu)體、類都可以定義方法
- 實(shí)例方法通過實(shí)例調(diào)用富腊,類型方法通過類型調(diào)用
- 在實(shí)例方法中
self
代表實(shí)例坏逢,在類型方法中self
代表類型
2,mutating
- 默認(rèn)情況下值類型的屬性不能被自身的方法修改
- 在方法前加上
mutating
關(guān)鍵字才允許修改
3赘被,@discardableResult
- 默認(rèn)情況下方法調(diào)用后返回值未被使用會(huì)報(bào)警告
- 在方法前加上
@discardableResult
關(guān)鍵字可以消除該警告
4是整,賦值給變量
三,下標(biāo)
1民假,介紹
- 使用
subscript
可以給枚舉、結(jié)構(gòu)體羊异、類添加下標(biāo)功能 -
subscript
的語法類似于計(jì)算屬性事秀,本質(zhì)也是函數(shù)
2,結(jié)構(gòu)體和類
- 結(jié)構(gòu)體(值類型):不能直接修改成員的值
- 類(引用類型):可以直接修改成員的值
3球化,多參數(shù)
四秽晚,繼承
1,介紹
- 枚舉筒愚、結(jié)構(gòu)體不支持繼承赴蝇,只有類支持繼承
-
Swift
沒有像OC
那樣的規(guī)定:任何類最終都要繼承自某個(gè)基類 - 子類可以重寫父類的方法、下標(biāo)巢掺、屬性
2句伶,重寫方法劲蜻、下標(biāo)
- 實(shí)例方法、下標(biāo)
- 類型方法考余、下標(biāo)
3先嬉,重寫屬性
- 說明
1>子類可以將父類的屬性重寫為計(jì)算屬性,不可以重寫為存儲(chǔ)屬性
2>只能重寫var
屬性楚堤,不能重寫let
屬性
3>子類重寫后屬性的權(quán)限不能小于父類屬性的權(quán)限(如果父類是只讀的疫蔓,那么子類可以是只讀的、也可以是讀寫的身冬;如果父類是讀寫的衅胀,那么子類必須是讀寫的)
- 實(shí)例屬性
- 類型屬性
4,屬性觀察器
- 實(shí)例屬性
- 類型屬性
5酥筝,final
- 被
final
修飾的類滚躯,禁止被繼承 - 被
final
修飾的方法、下標(biāo)嘿歌、屬性掸掏,禁止被重寫
6,方法調(diào)用
- 結(jié)構(gòu)體
- 類