假设我在操场上剪掉了这个密码

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函数工作…

最佳答案

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

self.funcPointer = self.func1

随后的错误
在初始化所有存储属性之前,在方法调用“func1”中使用self
可以通过声明funcPointer隐式展开选项来修复
internal final var funcPointer: (() -> Void)!

10-08 08:51