我有一个包含函数的泛型类A:
func addItem<item:T>->T? {
}
我用CellClass初始化这个类。我从addCell()调用addItem。接受以下内容没有问题。
func addCell(cell:CellClass, t:A<CellClass>) {
t.addItem(cell)
}
但这不起作用:
func addCell(cell:CellClass, t:A<CellClass> {
dispatch_async(queue, {
t.addItem(cell)
})
Xcode立即抱怨:&#34; CellClass?不是Void&#34; 的子类型 有什么想法吗? (注意队列正常工作)
答案 0 :(得分:3)
Swift执行"implicit return" from single-line closures,因此您的代码实际上被解释为:
func addCell(cell:CellClass, t:A<CellClass> {
dispatch_async(queue, {
return t.addItem(cell)
})
}
错误是因为闭包有Void
返回类型,但addItem
正在返回CellClass?
。您可以通过在以后添加单个return
行来解决此问题,以解决此问题:
func addCell(cell:CellClass, t:A<CellClass> {
dispatch_async(queue, {
t.addItem(cell)
return
})
}