1

便利なイニシャライザと指定されたイニシャライザの使用方法について少し知っています。ClassA というサンプル クラスを次に示します。

class ClassA {
    var number:Int

    convenience init(){
        self.init(newNumber: 10)
    }

    init(newNumber: Int) {
        self.number = newNumber;
    }
}

このクラスはうまく機能しますが、Base という別のクラスを実装するときに問題が発生しました。コードは次のとおりです。

class Base {
    var classObject:ClassA

    init(object: ClassA) {
        self.classObject = object
    }

    convenience init(){
        self.init(object: ClassA.init())
    }
}

クラス Base の簡易イニシャライザでは、ClassA の簡易イニシャライザを呼び出して、Base の指定イニシャライザの引数としてとります。

ただし、2 つの構文エラーが発生します。

  1. 型名の後にメンバー名またはコンストラクター呼び出しが必要です。
  2. () はクラス A に変換できません。

私が使用する場合

self.init(object: ClassA.init(newNumber: 10))

それ以外の

self.init(object: ClassA.init())

その後、最初のエラーは消えます。ClassAの便利イニシャライザが認識されていないようです。

4

1 に答える 1

1

使ってみてくださいself.init(object: ClassA())

于 2015-08-18T16:47:41.463 に答える