不能自我引用回调函数

时间:2014-09-12 12:58:04

标签: callback swift closures

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

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

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

简明,但不确定是否是同一类型的问题:

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

错误消息是:无法使用其他本地函数的捕获引用本地函数。

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

1 个答案:

答案 0 :(得分:0)

此代码成功编译:

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

Foo().foo({})

当然这段代码什么也没做。但是,如果您按照自己的意愿实施,它将按预期工作。