gpt4 book ai didi

ios - 无意的类嵌套 - 代码运行 10 次太频繁 (Swift)

转载 作者:行者123 更新时间:2023-11-28 08:44:35 26 4
gpt4 key购买 nike

所以这有点奇怪,我不太明白发生了什么......

所以我在彼此内部创建了一些自定义类/对象 (UIView),如下所示:

class Example1: UIView {
[properties etc.]

let Test = Example2()
Test.frame = CGRe...
addSubview(Test)
}


class Example2: UIView {
[properties etc.]
}

在您向 Example2 添加某种函数之前,这一切工作正常。然后它将多次运行所有内容(如果您调用 Example1, Example2 = 1, 2 它将按以下顺序运行:1, 1, 2, 2, 1, 2, 1, 2, 2, 2 )。

问题在于它会创建同一对象的多个版本,但具有不同的值,因为它们是在其他地方计算的(大小和位置等)。

我希望我能够像这样解释我的问题,否则就是整个(相当困惑,因为我已经尝试解决了一段时间)代码:http://pastebin.com/4D3kt1uN (如果您喜欢,可以尝试在 xcode 中运行它以了解我的意思)。

非常感谢任何帮助!

最佳答案

您的代码存在的问题是您在 layoutSubviews 方法中添加了 subview 。

override func layoutSubviews() {
...
let GuideLine = UIView()
addSubview(GuideLine)
...
}

layoutSubviews 方法可以在应用程序的生命周期中被多次调用。例如,参见这个 SO 问题“When is layoutSubviews called?”。因此,每当布局发生变化时,您的 subview 都会被添加到屏幕上。这就是为什么您会看到多个版本的 View 。尝试将您的逻辑移出 layoutSubviews 方法。

关于ios - 无意的类嵌套 - 代码运行 10 次太频繁 (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35669125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com