サーチ…


備考

init()は、クラスの初期化子の宣言に使用されるクラス内の特別なメソッドです。詳細はこちらをご覧ください: イニシャライザ

クラスの定義

あなたは次のようなクラスを定義します:

class Dog {}

クラスは別のクラスのサブクラスでもあります:

class Animal {}
class Dog: Animal {}

この例では、 AnimalDog準拠しているプロトコルでもあります

参照セマンティクス

クラスは参照型であり、複数の変数が同じインスタンスを参照できることを意味します。

class Dog {
    var name = ""
}

let firstDog = Dog()
firstDog.name = "Fido"

let otherDog = firstDog  // otherDog points to the same Dog instance
otherDog.name = "Rover"  // modifying otherDog also modifies firstDog

print(firstDog.name)  // prints "Rover"

クラスは参照型なので、クラスが定数であっても、その変数プロパティは変更できます。

class Dog {
    var name: String // name is a variable property.
    let age: Int // age is a constant property.
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

let constantDog = Dog(name: "Rover", age: 5)// This instance is a constant.
var variableDog = Dog(name: "Spot", age 7)// This instance is a variable.

constantDog.name = "Fido" // Not an error because name is a variable property.
constantDog.age = 6 // Error because age is a constant property.
constantDog = Dog(name: "Fido", age: 6)
/* The last one is an error because you are changing the actual reference, not
just what the reference points to. */

variableDog.name = "Ace" // Not an error because name is a variable property.
variableDog.age = 8 // Error because age is a constant property.
variableDog = Dog(name: "Ace", age: 8)
/* The last one is not an error because variableDog is a variable instance and
therefore the actual reference can be changed. */

===を使用して、2つのオブジェクトが同一かどうかをテストします(正確に同じインスタンスを指す):

class Dog: Equatable {
    let name: String
    init(name: String) { self.name = name }
}

// Consider two dogs equal if their names are equal.
func ==(lhs: Dog, rhs: Dog) -> Bool {
    return lhs.name == rhs.name
}

// Create two Dog instances which have the same name.
let spot1 = Dog(name: "Spot")
let spot2 = Dog(name: "Spot")

spot1 == spot2   // true, because the dogs are equal
spot1 != spot2   // false

spot1 === spot2  // false, because the dogs are different instances
spot1 !== spot2  // true

プロパティとメソッド

クラスは、クラスのインスタンスが使用できるプロパティを定義することができます。この例では、 DognamedogYearAge name 2つのプロパティがありdogYearAge

class Dog {
    var name = ""
    var dogYearAge = 0
}

プロパティにアクセスするには、ドット構文を使用します。

let dog = Dog()
print(dog.name)
print(dog.dogYearAge)

クラスはインスタンス上で呼び出すことのできるメソッドを定義することもできます。これらのメソッドは、クラス内で通常の関数と同様に宣言されています。

class Dog {
    func bark() {
        print("Ruff!")
    }
}

メソッドの呼び出しでは、ドット構文も使用されます。

dog.bark()

クラスと多重継承

Swiftは複数の継承をサポートしていません。つまり、複数のクラスから継承することはできません。

class Animal { ... }
class Pet { ... }

class Dog: Animal, Pet { ... } // This will result in a compiler error.

代わりに、タイプを作成するときに合成を使用することをお勧めします。これは、 プロトコルを使用して達成できます

除外

class ClassA {

    var timer: NSTimer!

    init() {
        // initialize timer
    }

    deinit {
        // code
        timer.invalidate()
    }
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow