我在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。
答案 0 :(得分:0)
我更改了方法签名以使用NSInteger而不是int,它可以正常运行而无需强制转换。
+(void) somemethod:(int)param;
更改为:
+(void) somemethod:(NSInteger)param;