无意的类嵌套 - 代码经常运行10次(Swift)

时间:2016-02-27 11:26:57

标签: ios swift nested

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

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

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中运行它以查看我的意思。)

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您的代码存在的问题是您要在layoutSubviews方法中添加子视图。

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

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