我有一个这样定义的快速类:
@objcMembers
public class MyURL: NSObject {
func concat(_ components: String...) -> MyURL {
concat(components)
}
/// Concat the specified components one by one.
func concat(_ components: [String]) -> MyURL {
components.forEach { let _ = value?.appendingPathComponent($0) }
return self
}
// All the other methods which are available for objc.
}
里面有很多方法可以用于objective-c,所以我@objcMembers
直接使用for类前缀,然后swift编译器开始抱怨这个:
方法 'concat' 与 Objective-C 选择器 'concat:' 与先前使用相同 Objective-C 选择器的声明冲突
它们具有完全相同的函数签名,但后者即使暴露也仅可用于 swift。现在我正在寻找一些编译标志来将后一种concat
方法标记为swift 只是为了告诉编译器忽略冲突错误。
@objc
并@objcMembers
明确地做到这一点,那么如何扭转呢?