クラス
目次>
クラス名は大文字で始まる class クラス名 {}
初期化するときは var instance = ClassName()
ストラクチャ・クラスの定義
struct Resolution { var width = 0 var height = 0 } class SomeClass { // class definition goes here }
プロパティの定義
循環参照防止のために weak が必要な場合あり
weak var resolution = Resolution()
weak参照はオプショナル値
class VideoMode { var resolution = Resolution() var interlaced = false var frameRate = 0.0 var name: String? }
インスタンスの作成
let someVideoMode = VideoMode()
プロパティへのアクセス
println("The width of someVideoMode is \(someVideoMode.resolution.width)")
バリュータイプ
参照タイプ
ID比較
同一かどうか (===) 同一でないかどうか (!==)
ポインタ
Strong Reference
強参照 強参照を使う場合オーナーがオブジェクトを保持する 使用する前に初期化が必要
Weak Reference
弱参照 弱参照を使う場合、ライフタイムで独立 使用する前に初期化が必要
Unowned Reference
Unowned参照を使う場合同じライフタイムでオブジェクトは保持される 使用する前に初期化が必要
Unowned Referenceを使う let holder = card.holder card.older.charge(2.19)
クラスの初期化
ifの中にだけ入っていたりする場合、ifの中に入らない場合は初期化されていない状態になるのでダメ
イニシャライザはインスタンスのすべての初期化を行う init(luckyNumber: Int, message: String){...}
ストラクチャの初期化
struct Color{
let red, green , blue: Double
init(grayScale: Double) {
red = grayScale
green = grayScale
blue = grayScale
}
}
mutating ?