Swift桥接返回父类对象而不是派生类

时间:2015-10-16 07:35:09

标签: objective-c swift

假设我在Objective C中有一个类,通过桥接我想在我的swift项目中使用。

right: 0

现在有两个构造函数可以在桥接后的swift版本中使用

@implementation MyClass

+ (instancetype)startVideo:(NSInt *)videoName
{
    return [[MyClass alloc] initWithName:videoName
                              offset:@"0"]

}

- (instancetype)initWithName:(NSString *)name 
               offset:(NSString *)offset
{

    self = [super init];

    return self;
}

我在快速项目中从MyClass派生类

class MyClass{
    public convenience init!(videoName: String!)
    public init(name: String!, offset: String)
}

使用便捷方法

创建MyClass2的对象
class MyClass2 : MyClass{
    var purposeOfClass: String = "Child class"
}

这里我的问题是,如果无法检查派生类返回对象,则桥接转换会使静态方法初始化器初始化器成为原因。

1 个答案:

答案 0 :(得分:0)

在Swift init方法中,Objective-C

中的截断参数名称
 - (instancetype)initWithFoo:(NSString *)foo 

到Swift

  init(foo : String) 

是强制性的。你必须写

let obj = MyClass2(videoName:"Swift.mov")
print(obj.purposeOfClass)