Swiftノート:クラスと構造体

2362 ワード

定義:
// 
class SomeClass {

}

// 
struct SomeStructure {

}

クラスと構造体の例
// 
struct Resolution {
    var width = 2
    var height = 5
}

// 
class VideoMode {
    var resolution = Resolution()
    var interlaced = false
    var frameRate = 1.0
    var name: String?
}

// 
let someResolution = Resolution()
let someVideoMode = VideoMode()

//     
print("\(someResolution.width)")
print("\(someVideoMode.frameRate)")
//2
//1.0

//  Objective-C  ,Swift  。
print("\(someVideoMode.resolution.width)")
someVideoMode.resolution.width = 10
print("\(someVideoMode.resolution.width)")
//2
//10

Swiftでは、すべての構造体と列挙タイプが値タイプです.これは、インスタンス、およびインスタンスに含まれる任意の値タイプ属性が、コードに渡されるとコピーされることを意味します.
let hd = Resolution(width: 1920, height: 1080)
var cinema = hd

例ではcinemaという変数を宣言し、hdを割り当てます.Resolutionは構造体であるためcinemaの値はhd自体ではなくhdのコピーである.hdとcinemaは同じ幅(width)と高さ(height)を持っているが,背後では全く異なる2つの例である.