gpt4 book ai didi

ios - IBoutlet 如何保持初始值变弱?意味着其他一些强大的物体指向?

转载 作者:行者123 更新时间:2023-11-28 19:26:06 30 4
gpt4 key购买 nike

我在 Storyboard上创建了一个按钮,并在源代码中创建了 IBOutlet。

当我尝试重新初始化同一个 socket 时,它发出警告“实例将被立即释放,因为属性‘button’是‘weak’”

我理解这一点,因为没有强指针指向,所以它会释放。但是最初按钮是有值的,如果它很弱那么一定有其他对象强烈指向它?

布局约束 IBOutlet 的类似情况。

在按钮的情况下,我认为它必须查看(但不确定)。

但是在布局约束的情况下会怎样。

如果我想通过以编程方式创建 UI 来实现相同的目标,该怎么办?

我的意思是,在 IB 创建 UI 的情况下,弱变量可以保持与 holding 相同的值。

提前致谢!

最佳答案

当从 Storyboard 中加载场景时,在将引用分配给 @IBOutlet 属性之前,将按钮添加到 View 层次结构中。由于按钮位于 View 层次结构中,因此对它有很强的引用。

当你说类似的话

self.buttonOutlet = UIButton() 

新按钮的唯一引用是弱属性,编译器警告您该对象将立即释放。

您可以使用局部变量来保存强引用,直到按钮被添加到 View 层次结构中。

let newButton = UIButton()
self.view.addSubview(newButton)
self.buttonOutlet = newButton

关于ios - IBoutlet 如何保持初始值变弱?意味着其他一些强大的物体指向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412386/

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