callback - 不可能对回调函数进行 self 引用

标签 callback swift closures

不知道如何正确表达问题,所以这里是代码:

class Foo {
    func foo2(nextCall: ()->()) {
    }

    func foo(nextCall: ()->()) {
        func f1() {
            foo2(f1)
        }
    }
}

浓缩了,但不确定是不是同类型的问题:

class Foo {
    func foo(nextCall: ()->()) {
        func f1() {
            foo(f1)
        }
    }
}

错误信息是:无法使用来自另一个本地函数的捕获来引用本地函数。

知道如何解决这个问题吗?提供的函数用作回调函数,不知何故我想知道为什么不能使用该函数。

最佳答案

此代码成功编译:

class Foo {
    func foo(nextCall: ()->()) {
        var f1:(()->())!
        f1 =  {
            self.foo(f1)
        }
    }
}

Foo().foo({})

当然这段代码什么都不做。但是,如果您按需要实现,它将按预期工作。

关于callback - 不可能对回调函数进行 self 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808885/

相关文章:

iOS XCTest 单元测试 - 设置主类

python - 在每个训练周期后评估测试集上的模型

ios - View 在 iPhone X 横向模式下看起来不正确

c++ - 使用类成员的C++函数回调并在main中运行它

iOS QOS_CLASS_USER_INITIATED 在与 UI 交互时卡住 (Swift)

javascript - "closure"在 JavaScript 中到底指的是什么?

swift - 快速[弱 self ]引起的内存泄漏

rust - 改变闭包体中的变量

c++具有每个实例化对象的特定功能的结构(或类)

javascript - 这是像 jQuery 对非阻塞代码那样进行回调的正确方法吗?