gpt4 book ai didi

objective-c - 混合 Swift 和 Objective C : using Swift types in Objective C

转载 作者:搜寻专家 更新时间:2023-11-01 05:35:57 26 4
gpt4 key购买 nike

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

我的这个工作正常,但是必须在 Swift 和 Objective C 中的基本类型之间进行转换很尴尬且冗长。例如,您必须将 Swift 中的 Int 转换为 Int32 才能在 Objective C 中使用它。

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

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

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

这可能吗?

做不到这一点,是否可以在 Swift 中的两种类型之间创建一个隐式转换运算符?

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

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

这是 Objective-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;

关于objective-c - 混合 Swift 和 Objective C : using Swift types in Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40016806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com