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

示例
- 能編譯通過,因為可選值都有個默認值
nil
4. 如果結構體中有自定義初始化器,會對自動生成構造器有什么影響?
- 一旦在定義結構體時自定義了初始化器,編譯器就不會再幫它自動生成其他初始化器

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

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

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

引用類型


