我可以在NS_SWIFT_NAME中使用保留关键字吗?

时间:2018-06-28 18:05:18

标签: objective-c swift

我试图使一个Objective-C委托协议更漂亮,以便在Swift中使用,并且在弄清楚如何使用NS_SWIFT_NAME时遇到了一些麻烦。是否可以使用NS_SWIFT_NAME在Swift名称中指定与Objective-C关键字(特别是forin)同名的参数?

这不会建立:

@protocol MyContainerDelegate
  -(NSInteger)myContainerContentsCount:(MyContainer *)container
    NS_SWIFT_NAME(contentsCount(in container:));
@end

但是如果我将其声明为NS_SWIFT_NAME(contentsCount(inContainer:)),它就可以工作。

我敢肯定,我已经见过Swift方法,它们的外部参数名称使用forin,但是我不知道在哪里可以找到这样的示例定义。可以用NS_SWIFT_NAME完成吗?

1 个答案:

答案 0 :(得分:3)

问题不是关键字,而是您指定了两个参数 NS_SWIFT_NAME中的标签和参数名称。参数标签 足够了。与

@protocol MyContainerDelegate
-(NSInteger)myContainerContentsCount:(MyContainer *)container
    NS_SWIFT_NAME(contentsCount(in:));
@end

该协议导出为Swift

public protocol MyContainerDelegate {
    public func contentsCount(in container: MyContainer!) -> Int
}