NSMenu在Swift 4中进行子类化

时间:2018-06-16 17:45:03

标签: objective-c swift4 appkit nsmenu swift4.1

在Objective-C中,琐碎的任务会发生什么?

- (instancetype)initWithTitle:(NSString *)title {
    return [super initWithTitle:title];
    //bool but_it_works_in_objective_c;
}

引起短路错误并提出建议: 只有在返回时允许的零值>>可用的初始化程序'init(title :)'不能覆盖不可用的初始化程序>>返回时只允许零值

Screenshots with compiler errors from Xcode 9.3 (Swift 4.1)

很长时间从 id 过渡到返回的 instancetype 似乎只是为了区分init系列初始化程序中缺少返回的想法。 那么为什么这么明显的暗示无法让自动修正呢?

1 个答案:

答案 0 :(得分:1)

在Swift中,(不可用)init方法不返回任何内容,您不得更改指定初始化程序的签名

class MyMenu : NSMenu {

    override init(title: String) {
        super.init(title: title)
    }

    required init(coder decoder: NSCoder) {
        super.init(coder: decoder)
    }
}