以下代码允许我访问WalkthroughView
的testView属性。
class WalkthroughViewController: UIViewController{
var walkthroughView = WalkthroughView()
override func loadView() {
self.view = walkthroughView
}
override func viewDidLoad() {
super.viewDidLoad()
walkthroughView.testView.backgroundColor = .cyan
}
}
以下代码不允许我访问WalkthroughView
的testView属性。
class WalkthroughViewController: UIViewController{
override func loadView() {
self.view = WalkthroughView()
}
override func viewDidLoad() {
super.viewDidLoad()
//cant access the .testView
self.view.testView.backgroundColor = .cyan //this doesn't compile
}
}
这怎么可能?第一个示例创建了一个WalkThroughView
的对象,该对象被分配给self.view。稍后调用此对象允许我更改它的属性。第二个示例将WalkthroughView()
分配给ViewController的视图,这种方法(据我所知)不可能访问WalkthroughView
属性。
为什么第二种方法不允许我访问WalkthroughView
testView
属性?
答案 0 :(得分:3)
在第一个示例中,您将定义WalkThroughView类型的实例变量walkThroughView。然后,您通过具有特殊类型的新变量引用它。
在第二个示例中,您将创建一个新的WalkthroughView实例并将其存储到视图控制器的视图属性中,然后通过现有的视图属性引用它。编译器不知道self.view包含WalkThroughView类型的变量。您需要将其投射为合法的。
success