func customPrint(number: Int, via printingFunction: @escaping (Int) -> Void) {
printingFunction(number)
}
class Temp {
func tempPrintingFunction(number i: Int) {
print(i)
}
func print5() {
customPrint(number: 5) { [self] number in
tempPrintingFunction(number: number)
}
}
}
Temp().print5()
这段代码很好:按预期编译和工作。
但是当我在捕获列表中传递函数本身而不是self
:
func print5() {
customPrint(number: 5) { [tempPrintingFunction] number in
tempPrintingFunction(number: number)
}
}
我得到错误:
调用中的无关参数标签“编号:”
当我删除标签时,一切都恢复正常。
但这很奇怪。它是什么?错误或功能?我在文档和论坛中都找不到有关此的任何信息。
奖励问题:当我传递到捕获列表
时,为什么代码不会崩溃?unowned self
不应该崩溃吗?我想让它崩溃
编辑:
顺便说一句,这种情况下捕获self
和函数本身有什么区别吗?在保留周期等方面。如果我们捕获函数,self
也会被捕获,不是吗?