@objc protocol Animal{
typealias ElementType
func getSiblings() ->[ElementType]
func getMother() -> ElementType?
func getFather() -> ElementType?
optional func addSibling(sibling:ElementType)
}
它不断给我错误信息:方法无法标记为@objc,因为其结果类型无法在Objective-C中表示。提前致谢
答案 0 :(得分:2)
我认为您不能将@objc
协议和协议与关联类型混合在一起(即声明typealias
)。您不能声明表示具有关联类型的协议的独立变量 - 它们仅用作通用约束,而泛型是仅限Swift的事物。而@objc
协议的目的是用于传递Objective-C函数。因此将两者结合起来没有意义。
这样说 - 当你将Animal
类型传递给非通用的Objective-C类时,ElementType
的类型是什么?