【发布时间】:2024-01-20 05:50:02
【问题描述】:
所以我有一个全局声明的 UIView:
var speedView: UIView!
然后我有一个将 UIView 作为参数并创建它的函数:
func buildView(view: UIView!) -> UIView {
view = UIView(frame: CGRectMake(0, 0, 200, 100))
...
}
这不起作用,因为 view 参数自动设置为您无法修改的 let。
一种解决方法是将其定义为var view...,如下所示:
func buildView(var view: UIView!) -> UIView { ... }
通过这样做,它在技术上是可行的,但后来如果我想去修改self.speedView,我无法访问它,因为它从未真正由该函数创建。
所以这个:
self.buildView(self.speedView)
我认为不会真正创建self.speedView。
有什么想法可以有一个函数,将一些全局定义的视图作为参数,创建它们,然后我仍然可以访问这些全局定义的视图?
【问题讨论】:
-
为什么要全局定义视图?
-
inout也许,你在找这里吗? -
@damian 因为我想稍后访问和修改它们。不只是 UIViews 还有 UILabels
-
对,但为什么是全球性的?它们应该属于 ViewController,您应该让 iOS 决定何时构造和销毁 ViewController(以便它可以为您合理地管理内存使用)。通过拥有全局变量,你否认了它的这种能力。
-
@damian 是的,对不起,我的意思是全局在控制器中,就在
class SomeController {之后