【发布时间】:2021-03-25 08:28:34
【问题描述】:
我有一个这样定义的 swift 类:
@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作为类前缀,然后swift编译器开始报错:
方法 'concat' 与 Objective-C 选择器 'concat:' 与先前使用相同 Objective-C 选择器的声明冲突
它们具有完全相同的函数签名,但后者即使暴露也只能用于 swift。现在我正在寻找一些编译标志来将后者 concat 方法标记为 swift only 以告诉编译器忽略冲突错误。
@objc 和 @objcMembers 明确执行此操作,那么如何反向执行?
【问题讨论】:
-
这正是我想要的,谢谢! @Larme
标签: ios swift objective-c swift-compiler