混合Swift和Objective C:在Objective C中使用Swift类型

时间:2016-10-13 09:12:52

标签: objective-c swift

我在Objective C中有一些遗留代码,我不想重写为Swift,但我想在Swift中使用这段代码。

我已经很好地工作了,但是在Swift和Objective C中必须转换基本类型之间很尴尬和冗长。例如,你必须从Swift中的Int转换为Int32以在Objective C中使用它。

为了使这更容易,我很乐意在接受Swift类型的Objective C代码中创建额外的重载。这似乎比在每个呼叫站点进行转换更容易。

有没有办法在Objective C中使用Swift类型?像这样:

-(void) doSomething:(Int*)theInt {
}

这可能吗?

如果失败了,是否可以在Swift中的两种类型之间创建隐式转换运算符?

还有其他提议的解决方案吗?

根据要求,这是当前情况的代码示例。

这是目标C:

@interface TestClass : NSObject 

+(void) somemethod:(int)param;

@end

@implementation TestClass

+(void) somemethod:(int)param {

}

@end

以下是在Swift中调用方法的示例:

let swiftInt :Int = 2
TestClass.somemethod(Int32(swiftInt))

我想在从Swift调用时无需在每个调用站点中转换为Int32。

1 个答案:

答案 0 :(得分:0)

我更改了方法签名以使用NSInteger而不是int,它可以正常运行而无需强制转换。

+(void) somemethod:(int)param;

更改为:

+(void) somemethod:(NSInteger)param;