objective-c - Swift 覆盖从 Objective-C 继承的类中的 init()

标签 objective-c swift

我有一个 Objective-C 类,这是它的 init():

- (id)init
{
    self = [super initWithNibName:@"xxxViewController" bundle:nil];
    if (self)
    {

    }
    return self;
}

我有一个 Swift 类是它的子类。 如何覆盖 Swift 类中父类(super class)的 init?我想将 initWithNibName 移动到 Swift 类中。

这是我尝试过的 Swift 类中的 init:

init() {
    super.init()
}

我得到错误:

Must call a designated intializer of the super class

最佳答案

由于 init() 不是指定的初始化器(在本例中,initWithNibName:bundle: 是),我们需要让编译器知道它实际上是一个指定的初始化器。我们可以通过在 header 中的声明中附加一个属性来做到这一点(在最后一个属性之后,但在分号之前):

@interface MyClass : Superclass
- (instancetype)init NS_DESIGNATED_INITIALIZER;
@end

关于objective-c - Swift 覆盖从 Objective-C 继承的类中的 init(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57829098/

相关文章:

ios - SpriteKit 中的 CPU 使用率非常高

Swift - 在调用完成处理程序 swift 之前等待异步 for-in 循环完成

ios - 后退按钮未出现在 View Controller 中

ios - 检查第二个 UIAlertView 的 buttonIndex

swift - 将 Instagram 添加到 UIActivityViewController

ios - 无法在 Swift 中使用 SpriteKit 多次初始化 GameScene

ios - 进度 View 循环

objective-c - NSString 特殊字符编码

c++ - 在 iOS 上使用 C++ 代码,创建静态库或与 Objective C 混合使用?

ios - 如何在 iOS 上使用 Storyboard随时调用滑动菜单、任何 View ?