1. ホーム
  2. function

[解決済み] Swiftのクラスにおける静的関数/変数とクラス関数/変数?

2022-03-22 07:42:03

質問

次のコードは、Swift 1.2でコンパイルされます。

class myClass {
    static func myMethod1() {
    }
    class func myMethod2() {
    }
    static var myVar1 = ""
}

func doSomething() {
    myClass.myMethod1()
    myClass.myMethod2()
    myClass.myVar1 = "abc"
}

とはどのような違いがあるのでしょうか? スタティック 関数と クラス 関数はありますか?いつ、どれを使えばいいのでしょうか?

別の変数を定義しようとすると class var myVar2 = "" と表示されます。

Class stored properties not yet supported in classes; did you mean 'static'?

この機能がサポートされたとき 静的 変数と クラス という変数がある場合(つまり、両方がクラスで定義されている場合)には、どうすればよいのでしょうか?また、いつ、どちらを使うべきでしょうか?

(Xcode 6.3)

解決方法は?

staticclass はどちらもクラスのインスタンスではなく、クラスとメソッドを関連付けます。違いは、サブクラスがメソッドをオーバーライドできることです。 class メソッドをオーバーライドすることはできません。 static メソッドを使用します。

class プロパティは理論的には同じように機能しますが (サブクラスはそれらをオーバーライドできます)、Swift ではまだ可能ではありません。