水夫と戯れて

Appleの開発言語Swiftのことを書く。公開されている範囲内で書いています。文章に「?」が含まれているところはよく理解していないところ。

クラス

目次>

クラス名は大文字で始まる 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 ?