0

创建一个使用属性调用的类Parent,并为您的类title编写一个initanddeinit方法。

编写一个名为Child.

我的问题是将其放入代码中(调用super.init(title:)并传递title参数。

class Parent {
    let title: String

    init(title: String){
        self.title = title
        print("\(title) is initialized")
    }

    deinit {
        print("\(title) is being deinitialized.")
    }
}

class Child: Parent {
    let subtitle: String
    init(subtitle: String){
        self.subtitle = subtitle
        // i'm supposed to call a super.init, how

        print("\(subtitle) is initialized")
    }

    deinit {
        print("\(subtitle) is being deinitialized.")
    }
}
4

2 回答 2

1

Child为你的 atitle和 a制作你的初始化器subtitle,然后调用super.init(title: title)Child的初始化器:

class Child: Parent {
    let subtitle: String
    init(title: String, subtitle: String){
        self.subtitle = subtitle
        super.init(title: title)

        print("\(subtitle) is initialized")
    }

    deinit {
        print("\(subtitle) is being deinitialized.")
    }
}

然后,如果您创建一个Child对象并将其分配给Optional Child(即Child?),您将看到两个初始化消息:

var child: Child? = Child(title: "Star Wars: Episode VI", subtitle: "Return of the Jedi")

星球大战:第六集已初始化
绝地归来已初始化

然后如果您分配nil给您的变量,您将看到两个未初始化的消息:

child = nil

绝地归来正在取消初始化。
星球大战:第六集正在取消初始化。

于 2017-01-08T00:14:29.143 回答
0

我实际上没有尝试,但我认为它可以这样工作。让我知道它是否有效。

class Child: Parent {
    let subtitle: String

    override init(title: String, subtitle:String) {
        self.subtitle = subtitle
        super.init(title)
    }
}
于 2017-01-08T00:19:27.377 回答