【发布时间】:2016-10-13 09:12:51
【问题描述】:
我在 Objective C 中有一些遗留代码,我不想重写为 Swift,但我想在 Swift 中使用这些代码。
我的工作正常,但是在 Swift 和 Objective C 中的基本类型之间进行转换是很尴尬和冗长的。例如,您必须从 Swift 中的 Int 转换为 Int32 才能在 Objective C 中使用它。
为了使这更容易,我很高兴在我的 Objective C 代码中创建额外的重载,这些重载接受 Swift 类型。这似乎比在每个调用站点中进行转换更容易。
有没有办法在 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 的需要。
【问题讨论】:
-
Swift 的
Int在 Objective C 中被称为NSInteger。编辑:嗯,它是自动桥接,但它们不是同一类型。 -
能否提供代码示例?
-
@M_G 我已按要求添加了当前情况的示例
标签: objective-c swift