关于自定义对象,线程在swift中运行的方式/顺序存在问题。让我们说我用一些简单的代码创建了一个UIView:
import UIKit
class ExampleObject: UIView {
var list = [Int]()
override func draw(_ rect: CGRect) {
list = [1,2,3]
}
}
现在我尝试在我的View Controller中创建它后取回list变量的值:
override func viewDidLoad() {
super.viewDidLoad()
let eg = ExampleObject()
self.view.addSubview(eg)
print(eg.list)
}
即使我已经创建了应该是[]
的对象,但它会打印出[1,2,3]
。但是,如果我稍后从一个不同的函数调用它,我将得到正确的值。我猜测这与事物在swift中执行的顺序有关,所以我可以在我添加到视图后改变按钮的颜色......但我需要得到list的实际值因为在我的自定义对象中它正在计算一些非常复杂的东西。有没有办法可以做到这一点?