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 的指定构造器的参数。

但是,我得到两个语法错误。

  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 回答