从Swift调用Objective C自定义初始化函数

时间:2018-08-13 12:50:34

标签: ios objective-c swift inheritance

A类是在目标C中编写的,具有自定义初始化功能

@interface A ()

....

@end

@implementation A

- (id)customInitImplementedInA
{
    ... 
    return self;
}

B类继承自A类,并以以下方式使用此自定义init:

@interface B : A ()

....

@end

@implementation B
+(instancetype)instanceB{
    B *b = [[B alloc] customInitImplementedInA];
    ...
    return b;
}

现在,我想创建用 Swift 编写的C类,该类从A吸取并使用相同的init函数。我怎么做?

class C: A {
  //How do I use customInitImplementedInA here?
}

2 个答案:

答案 0 :(得分:1)

您应该可以通过super.methodname语法来做到这一点。

class C: A {
    init() {
        super.customInitImplementedInA()
        // Any extra initialization for C goes here.
    }
}

答案 1 :(得分:0)

如果您从Obj-C继承swift类,则swift clas将具有obj-c init()。 如果您需要调用它,可以将其包含在您的swift初始化中。

 class C: A {

        var message: B?

        init(message: B) {
            super.customInitImplementedInA()

            self.message = message

        }
    }