0
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也会被捕获,不是吗?

4

0 回答 0