斯威夫特协议:我做错了什么?

时间:2015-01-03 01:42:36

标签: objective-c swift protocols

@objc protocol Animal{
typealias ElementType
func getSiblings() ->[ElementType]
func getMother() -> ElementType?
func getFather() -> ElementType?
optional func addSibling(sibling:ElementType)
}    

它不断给我错误信息:方法无法标记为@objc,因为其结果类型无法在Objective-C中表示。提前致谢

1 个答案:

答案 0 :(得分:2)

我认为您不能将@objc协议和协议与关联类型混合在一起(即声明typealias)。您不能声明表示具有关联类型的协议的独立变量 - 它们仅用作通用约束,而泛型是仅限Swift的事物。而@objc协议的目的是用于传递Objective-C函数。因此将两者结合起来没有意义。

这样说 - 当你将Animal类型传递给非通用的Objective-C类时,ElementType的类型是什么?