【iOS 中文開放式課程】類別與結構 (Classes and Structures)
我們需要您的贊助
比如我們寫了一個,可以兩數相乘的乘法函式,也寫了一個可以兩數相除的除法函式。可以將這兩各函式打包起來包在類別與結構中。
類別與結構共同點:
- 屬性 (property): 定義屬性用於存儲值
- 方法 (method): 定義方法用於提供功能
- 下標 (subscript): 定義下標語法來訪問實例所包含的值
- 建構器 (initializer): 定義構造器用於生成初始化值
- 擴展 (extension): 通過擴展增加默認實現的功能
- 協定 (protocol): 實現協議以提供某種標準功能
差異之處,類別還有:
- 繼承 (inherit): 類別可以繼承另一個類別的功能
- 型別轉換 (Type casting): 在執行時檢查和轉換一個類別實體的類型
- 解構器 (deinitializer): 一個類別實體釋放任何其所被分配的資源
- 參考計數 (Reference counting): 對一個類別實體的多次參考
選擇使用結構的關鍵
- 資料少
- 指派或傳遞這個實體時,資料是拷貝不是參考
- 不需要繼承其他類別功能
若不符合以上三點,就選擇類別
類別與結構格式
class 類別名稱 {
定義類別內的屬性、方法等內容
}
struct 結構名稱 {
定義結構內的屬性、方法等內容
}
範例
struct Resolution {
var width = 0
var height = 0
}
class VideoMode {
var resolution = Resolution()
var interlaced = false
var frameRate = 0.0
var name: String?
}
實體化
let mResolution = Resolution()
let mVideoMode = VideoMode()
獲取屬性值
實體名後面緊跟屬性名,兩者通過點(.)連接
print("\(mResolution.width)")
//0
指派屬性值
mVideoMode.resolution.width = 1280
結構建構器設定初始化
注意:類別實體沒有成員逐一建構器這個功能。
let vga = Resolution(width:640, height: 480)
參考資料: