Kam*_*icz 13 generics ios swift
让我们假设我们有一个简单的泛型类:
class Foo<T> {
}
Run Code Online (Sandbox Code Playgroud)
接下来添加到这个extension实现的类UITableViewDatasoure:
extension Foo: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//Code here
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//Code here
}
}
Run Code Online (Sandbox Code Playgroud)
此结构导致编译器错误消息:
从泛型类Non-'@ objc'方法继承的泛型类或类的扩展中不支持@objc
'tableView(_:numberOfRowsInSection :)'不满足'@objc'协议'UITableViewDataSource'的要求
谁能告诉我为什么?以及如何解决这个问题?
Rob*_*ier 26
错误消息似乎非常清楚.这不受支持.您无法将@objc方法附加到扩展中的泛型类.您需要在类定义中定义这些方法,而不是扩展."为什么"是"编译器今天不支持它".(由于专业化,很可能难以支持,但真正的答案是"编译器无法做到.")