如何在Swift中初始化和使用函数指针

时间:2019-05-28 15:19:34

标签: swift function-pointers

比方说我在操场上偷了这段代码

import UIKit

internal final class TestClass {
    internal final var funcPointer: () -> Void

    init() {
        self.funcPointer = self.func1() //Cannot assign value of type '()' to type '() -> Void'
    }

    internal final func func1() {
        print("func1 is called!")
    }
}

var testClass: TestClass = TestClass()
testClass.funcPointer()

为什么我在init()方法中收到显示的错误消息,以及如何正确初始化函数指针?

我已经看过this个帖子和this教程,但是无论如何我都无法使它适用于(Void)-> Void函数...

1 个答案:

答案 0 :(得分:2)

要将闭包分配给属性,必须删除括号

self.funcPointer = self.func1

后续错误

  在初始化所有存储的属性之前,在方法调用“ func1”中使用的

self

可以通过声明funcPointer隐式未包装的可选内容来解决

internal final var funcPointer: (() -> Void)!