1.結(jié)構(gòu)體基本介紹?
- 在 Swift 標(biāo)準(zhǔn)庫中,絕大多數(shù)的公開類型都是結(jié)構(gòu)體,而枚舉和類只占用很小的一部分
- 比如
Bool、Int、Double、String、Array、Dictionary等常見類型都是結(jié)構(gòu)體
結(jié)構(gòu)體 - 所有結(jié)構(gòu)體都有一個(gè)編譯器自動(dòng)生成的初始化器(Initializer、初始化方法、構(gòu)造器、構(gòu)造方法)
- 在第⑥行抵用的,可以傳入所有成員值,用以初始化所有成員(
存儲(chǔ)屬性,Stored Property)
2. 結(jié)構(gòu)體的生成的初始化器最大特點(diǎn)(目的)是什么?
-
保證所有成員都有初始值
自動(dòng)初始化器
3. 下面代碼能編譯通過嗎?

示例
- 能編譯通過,因?yàn)榭蛇x值都有個(gè)默認(rèn)值
nil
4. 如果結(jié)構(gòu)體中有自定義初始化器,會(huì)對(duì)自動(dòng)生成構(gòu)造器有什么影響?
- 一旦在定義結(jié)構(gòu)體時(shí)自定義了初始化器,編譯器就不會(huì)再幫它自動(dòng)生成其他初始化器

不再生成自動(dòng)構(gòu)造器
5. 類的基本介紹,對(duì)比結(jié)構(gòu)體?
- 類的定義和結(jié)構(gòu)體類似,但編譯器并沒有為類自動(dòng)生成可以傳入成員值的初始化器

類
6. 類的初始器(如果所有成員定義時(shí)指定了初始值)?

類的初始化器
7. 結(jié)構(gòu)體和類的本質(zhì)區(qū)別?
-
結(jié)構(gòu)體是值類型(枚舉也是值類型),類是引用類型(指針類型)
本質(zhì)區(qū)別
8. 什么是 Copy On Write 技術(shù)?
- 在 Swift 標(biāo)準(zhǔn)庫中,為了提升性能,String、Array、Dictionary、Set 采取了
Copy On Write技術(shù) - 僅當(dāng)有
寫操作時(shí),才會(huì)真正執(zhí)行拷貝操作 - 對(duì)于標(biāo)準(zhǔn)庫值類型的賦值操作,Swift 能確保最佳性能,所有沒有必要為了保證最佳性能來避免賦值
9. 引用類型在賦值或者當(dāng)成參數(shù)傳遞時(shí)有什么特點(diǎn)?

引用類型


