一尘不染

在Swift中使用Objective-C方法似乎跨越了Swift语言的关键字

swift

我有一个objective-c方法:

-(DeviceVar *)var:(NSString*)valid

在Objective-C中,我简单地将其用作:

DeviceVar* rtc = [device var:@"rtc"];

但是我很快就使用这种方法遇到了问题:

let rtc = device.var("etc")

因为var是我猜的关键字,所以我的问题是如何使其工作。


阅读 142

收藏
2020-07-07

共1个答案

一尘不染

如果需要将保留字用作方法名称,则可以始终将其保留在反引号中:

let rtc = device.`var`("etc")

如果您具有对Objective-C头文件的写访问权,那么另一种选择是为Swift定义一个不同的方法名称(在“将Swift与Cocoa和Objective-
C一起使用”参考中,比较同一项目中的Swift和Objective-C):

-(DeviceVar *)var:(NSString*)valid NS_SWIFT_NAME(deviceVar(_:));

然后可以从Swift调用为

let rtc = device.deviceVar("etc")
2020-07-07