让我们假设我在Objective C中有一个类,通过桥接我想在我的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;
}
现在有两个构造函数将在桥接后的swift版本中可用
class MyClass{
public convenience init!(videoName: String!)
public init(name: String!, offset: String)
}
我在我的快速项目中从MyClass派生了类
class MyClass2 : MyClass{
var purposeOfClass: String = "Child class"
}
使用便捷方法创建MyClass2的对象
var obj = MyClass2("Swift.mov")
print(obj.purposeOfClass) // You will get exception at this point, because the constructor returned Parent's class object.
这里我的问题是,如果无法检查派生类返回对象,桥接转换会使静态方法初始化器初始化器成为原因 .
1 回答
在Swift
init
方法中,截断的参数名称来自Objective-C到斯威夫特
是强制性的 . 你必须写