iOS Swift.在结构构造函数中捕获闭包中的属性



我在闭包/结构/捕获属性方面遇到了一些问题。

我真的无法解释架构,但我需要这样的东西:

class ControllerAAA {
    struct Events {
        var userDidSelect(_ controller: Controller) -> ()?
    }
}
class ControllerBBB {
    var foo: Foo
    var events: ControllerAAA.Events(userDidSelect: {
        (controller: Controller) -> ()? in
         // Here i need foo. Self mean the Block not the Controller
    })
    // Then i will passed events when i call ControllerAAA and ControllerAAA will use events.userDidSelect(...) when he is done.
}

是否有可能在类中定义的结构构造函数中的闭包中达到"self"?

在定义回调块时,您处于类的词法范围内,而不是类的实例。 要解决此问题,您必须在实例方法的上下文中初始化回调。

我可能会尝试这样的事情:

enum ControllerAEvent {
    case userDidSelect((_ controller: Controller) -> ())
}
class ControllerBBB {
    var foo: String
    var events: ControllerAEvent
    init() {
        events = .userDidSelect({
            (controller: Controller) -> () in
            Print(self.foo)
        })
    }
    // Then i will passed events when i call ControllerAAA and ControllerAAA will use events.userDidSelect(...) when he is done.
}

最新更新