我试图使objective-c委托协议更适合在swift中使用,并且我在计算如何使用NS_SWIFT_NAME
时遇到了一些麻烦。是否可以使用NS_SWIFT_NAME
在swift名称中指定与objective-c关键字同名的参数(特别是for
和in
)?
这不会生成:
@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/