Objective c 混合Swift和Objective C:在Objective C中使用Swift类型
我在Objective C中有一些遗留代码,我不想重写成Swift,但我想在Swift中使用这些代码 我已经很好地实现了这一点,但是在Swift和Objective C中必须在基本类型之间进行转换,这既麻烦又冗长。例如,您必须在Swift中从Int转换为Int32才能在Objective C中使用它 为了使这更容易,我很乐意在我的目标C代码中创建额外的重载,这些重载接受Swift类型。这似乎比在每个呼叫站点中进行转换更容易 有没有一种方法可以在Objective C中使用Swift类型?大概是这样的:Objective c 混合Swift和Objective C:在Objective C中使用Swift类型,objective-c,swift,Objective C,Swift,我在Objective C中有一些遗留代码,我不想重写成Swift,但我想在Swift中使用这些代码 我已经很好地实现了这一点,但是在Swift和Objective C中必须在基本类型之间进行转换,这既麻烦又冗长。例如,您必须在Swift中从Int转换为Int32才能在Objective C中使用它 为了使这更容易,我很乐意在我的目标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的需要。我将方法签名更改为使用NSInteger而不是int,并且它工作良好,无需强制转换
+(void)somemethod:(int)param代码>
改为:
+(void)somemethod:(NSInteger)param
Swift的Int
在目标C中被称为NSInteger
。编辑:嗯,这是一个自动桥接器,虽然它们不是同一类型。你能提供一个代码示例吗?@M\G我根据要求添加了一个当前情况的示例