我试图使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

但如果我声明它是有效的。
我很肯定我见过swift方法的外部参数名NS_SWIFT_NAME(contentsCount(inContainer:))for,但我不知道在哪里可以找到这样的示例定义。这可以用in来完成吗?

最佳答案

问题不在于关键字,而在于您同时指定了两个参数
NS_SWIFT_NAME中的标签和参数名。参数标签
已经足够了。与

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

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

关于objective-c - 我可以在NS_SWIFT_NAME中使用保留关键字吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51089043/

10-12 14:35