如何将闭包作为变量传递?

我有来自游乐场的以下代码:

class MyButton {
    var pressed: (() -> Void)?
    
    func press() {
        pressed?()
    }
}

class SomeView {
    var buttonDidPressed: (() -> Void)?
    
    let button = MyButton()
    
    init() {
        button.pressed = buttonDidPressed
    }
    
    func press() {
        button.press()
    }
}

let view = SomeView()

view.buttonDidPressed = {
    print("pressed")
}

view.press()

MyButton具有pressedpress调用时执行的闭包SomeViews init中,我为该pressed闭包赋值当然,在初始化时是nil但是,在初始化之后SomeView,我为该buttonDidPressed闭包赋值因为闭包是引用类型,所以在view.press调用时buttonDidPressed不应为nil。但是,无论如何,我的打印没有执行。为什么?

新开发者

这是我想达到的目标:

class SomeView {
    var buttonDidPressed: (() -> Void)? = nil {
       didSet {
          button.pressed = buttonDidPressed
       }
    }
    
    let button = MyButton()
    
    func press() {
        button.press()
    }
}

你的代码是不工作的原因是因为SomeView.initbuttonDidPressednil-也就是说,它的缺乏参考。所以:

buttonDidPressed = nil
button.pressed = buttonDidPressed 
// is equivalent to
button.pressed = nil

以后分配新的(或不同的)引用buttonDidPressed不会更改该button.pressed属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift:如何将闭包作为函数参数传递

来自分类Dev

PHP:如何将实例变量传递给闭包?

来自分类Dev

如何将变量移出闭包?

来自分类Dev

如何将$ this绑定到在PHP 5.4中作为方法参数传递的闭包?

来自分类Dev

Groovy:如何将闭包作为参数传递以执行类内的方法

来自分类Dev

如何传递闭包以将 Ruby 作为参数发送

来自分类Dev

如何将捕获的变量移动到闭包内的闭包中?

来自分类Dev

如何将变量作为参数传递

来自分类Dev

将变量传递给闭包

来自分类Dev

将变量传递给作为可调用对象执行的闭包

来自分类Dev

如何通过原始指针将闭包作为C函数的参数传递?

来自分类Dev

将闭包作为参数传递给构造函数C ++

来自分类Dev

将口才模型作为PHP中的闭包参数传递

来自分类Dev

Swift:如何将闭包参数从类方法传递给类中的函数

来自分类Dev

groovy ..将闭包作为参数传递给另一个闭包

来自分类Dev

Swift:将闭包作为类变量中的init参数

来自分类Dev

如何将JQuery文本参数作为变量传递

来自分类Dev

如何将url作为变量传递给wget ..?

来自分类Dev

如何将参数作为函数传递给变量?

来自分类Dev

VueJS:如何将内插变量作为参数传递

来自分类Dev

如何将Bash变量作为Python参数传递

来自分类Dev

如何将JavaScript变量作为url参数传递

来自分类Dev

如何将案例类作为变量传递到ScalaReflection

来自分类Dev

如何将url作为变量传递给wget ..?

来自分类Dev

如何将webgl函数作为变量传递

来自分类Dev

Rails / Ruby如何将“ all”作为条件变量传递

来自分类Dev

如何将互斥参数作为变量传递

来自分类Dev

Python:如何将值传递给作为函数的变量?

来自分类Dev

如何将变量日志作为参数传递给脚本?

Related 相关文章

  1. 1

    Swift:如何将闭包作为函数参数传递

  2. 2

    PHP:如何将实例变量传递给闭包?

  3. 3

    如何将变量移出闭包?

  4. 4

    如何将$ this绑定到在PHP 5.4中作为方法参数传递的闭包?

  5. 5

    Groovy:如何将闭包作为参数传递以执行类内的方法

  6. 6

    如何传递闭包以将 Ruby 作为参数发送

  7. 7

    如何将捕获的变量移动到闭包内的闭包中?

  8. 8

    如何将变量作为参数传递

  9. 9

    将变量传递给闭包

  10. 10

    将变量传递给作为可调用对象执行的闭包

  11. 11

    如何通过原始指针将闭包作为C函数的参数传递?

  12. 12

    将闭包作为参数传递给构造函数C ++

  13. 13

    将口才模型作为PHP中的闭包参数传递

  14. 14

    Swift:如何将闭包参数从类方法传递给类中的函数

  15. 15

    groovy ..将闭包作为参数传递给另一个闭包

  16. 16

    Swift:将闭包作为类变量中的init参数

  17. 17

    如何将JQuery文本参数作为变量传递

  18. 18

    如何将url作为变量传递给wget ..?

  19. 19

    如何将参数作为函数传递给变量?

  20. 20

    VueJS:如何将内插变量作为参数传递

  21. 21

    如何将Bash变量作为Python参数传递

  22. 22

    如何将JavaScript变量作为url参数传递

  23. 23

    如何将案例类作为变量传递到ScalaReflection

  24. 24

    如何将url作为变量传递给wget ..?

  25. 25

    如何将webgl函数作为变量传递

  26. 26

    Rails / Ruby如何将“ all”作为条件变量传递

  27. 27

    如何将互斥参数作为变量传递

  28. 28

    Python:如何将值传递给作为函数的变量?

  29. 29

    如何将变量日志作为参数传递给脚本?

热门标签

归档