繁体   English   中英

为什么didSet中没有无限循环?

Why no Infinite loop in didSet?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在我的FirstViewController中,我有一个指向我的SecondViewController的按钮,将数据传递给SecondViewController中的属性。 此属性具有属性观察者,在设置时创建SecondViewController的新实例。

虽然它正在按我的意愿工作,但我想知道为什么它不会陷入无限循环,永远创建SecondViewController的实例。 这样做是不错的做法?

FirstViewController:

class FirstViewController: UIViewController {
    @IBAction func something(sender: UIButton) {
        let destination = storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as SecondViewController
        destination.selected = 1
        showViewController(destination, sender: self)
    }
}

SecondViewController:

class SecondViewController: UIViewController {
    var selected: Int = 0 {
        didSet {
            let destination = storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as SecondViewController
            destination.selected = selected
            showViewController(destination, sender: self)
        }
    }

    @IBAction func something(sender: UIButton) {
        selected = 2
    }
}
1 个回复

如果你在Swift编程语言 - 属性中查看Apple的Swift文档,Apple说:

注意:

如果为其自己的didSet观察者中的属性赋值,则分配的新值将替换刚刚设置的值。

所以如果你在didSet块的第一行放置一个断点,我相信它应该只被调用一次。

1 didSet在Swift 5中陷入无限循环

我只是将UISlider从UIStoryboard拖放到UIViewController ,并想要进行一些转换。 因此,我在didSet方法下编写了代码,它进入了无限循环。 我做错了什么? 更新资料 如果我只是写下面的代码,那么它可以正常工作。 我尝试了另一种方法 ...

3 递归到没有无限循环的对象中

我为了学习而遍历javascript中的对象。 现在,这等于将第一个对象中的每个属性分散出来,并赋予该函数递归到其找到的任何子对象(包括函数)中。 以window对象为例,当window.top指向window时,函数陷入无限循环。 我应该如何最好地跟踪已经遍历过的对象,以避免重复出现 ...

4 断言pytest中没有无限循环

我有一个不应挂起的功能。 具体来说,它检测会导致其挂起的情况,并引发错误。 简化后,我的功能与此类似: 我想在pytest编写一个单元测试以确保这种行为。 我知道如何断言测试应该引发异常。 但是,在这种情况下,如果测试失败,则实际上并不会失败。 整个测试设备只是挂起。 如 ...

5 有无限循环的问题吗?

我遇到意外的无限循环问题。 我刚开始使用javascript,因此我一直在尝试制作一个简单的游戏作为练习。 我不断陷入无限循环,我不知道为什么。 我相当确定这不是语法错误,因为控制台没有告诉我任何有关的信息。 这是发生问题的代码: HTML: JavaScript: ...

6 为什么会有无限循环?

程序陷入无限循环。 但是arr->count printf打印一个正常值(例如4)。 count具有unsigned int类型,而arr是指向int的指针。 这是什么问题 循环首先打印arr值,然后继续打印垃圾值 在arrat_get它可以打印数组 ...

7 在didSet中循环

在didSet中使用循环时,我们遇到了这种奇怪的行为。 我们的想法是我们有一个具有树结构的数据类型,并且在每个元素中我们想要存储项目所在的级别。 因此,在level属性的didSet中,我们还将设置子级的level属性。 但是我们意识到这只有在使用forEach而不是在使用for .. i ...

8 我有无限循环

我正在通过计数用骰子达到n的可能方法来练习我的java。 当将n值输入较小的数字时,它将起作用。 但是当我输入n值到100时,它会无限循环。 你们可以帮我吗? 这是我的代码: ...

2017-02-05 15:12:00 1 33   java
10 为什么JavaFX没有无限循环?

在GTk或OpenGl之类的库中,我们有一个像这样的无限循环 但是我在javafx中没有看到这样的东西,它只有一个start()方法来编写我们的代码,而launch()方法来显示start的阶段。有人可以向我解释一下javafx的工作原理以及使用方法吗GPU或CPU还是两者皆有? 谢谢 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM