将 Obj-C 初始化覆盖函数转换为 Swift 3

Converting Obj-C init override function into Swift 3

如何将MyViewControllerB中的initWithDevice:函数改写成Swift3?

MyViewControllerA

@interface MyViewControllerA : UIViewController
- (instancetype)initWithDevice:(DeviceClass *)device;
@end

@implementation MyViewControllerA
- (instancetype)initWithDevice:(DeviceClass *)device
{
    self = [super init];
    if ( self ) {
        // set a bunch of properties 
    }
    return self;
}
@end

MyViewControllerB

@interface MyViewControllerB : MyViewControllerA
    - (instancetype)initWithDevice:(DeviceClass *)device;
@end

@implementation MyViewControllerB
- (instancetype)initWithDevice:(DeviceClass *)device
{
    if (self = [super initWithNibName:@"AnotherViewController" bundle:nil]) {
        // init stuff for subclass
    }
    return self;
}
@end

对于 Swift 3.0Swift 2.2

override init(device: DeviceClass) {
super.init(nibName: "AnotherViewController", bundle: nil)

// init stuff for subclass

}

required init?(coder aDecoder: NSCoder){ 
    super.init(coder: aDecoder) 
}

您也可以尝试使用此网站将您的 Objective-c 代码转换为 Swiftobjectivec2swift