gpt4 book ai didi

ios - 两个类之间的弱变量和指针问题

转载 作者:可可西里 更新时间:2023-11-01 02:15:23 26 4
gpt4 key购买 nike

我正在使用 Swift 语言。我在我的 viewcontroller 类中,我想在另一个类中存储一些东西,但我不希望那个类有任何指向我类的强指针。所以我正在使用 weak。我正在尝试两种方法来做到这一点。一个有效(因为没有指向我的 viewcontroller 类的强指针而成功),而另一个无效(指向我的 viewcontroller 的指针是强指针,即使我将其命名为 weak

class MyViewController {

override func viewDidLoad() {
someOtherClass.function(someArgument) { [ weak myself = self ] in
myself?.someButton.text = "I got you captured, Mr. ViewController"
}

前面的代码成功地不让 someOtherClass 强指向 MyViewController。然后我取出 weak myself = self 并在函数本身中命名它,如下所示:

class MyViewController {

override func viewDidLoad() {
someOtherClass.function(someArgument) {
weak let myself = self
myself?.someButton.text = "I got you captured, Mr. ViewController"
}

在这种情况下,someOtherClass 强烈指向我的 viewController 类。有人知道为什么吗?

最佳答案

这都是关于变量创建的范围。在您的第一个示例中,您在 ViewController 类的范围内创建了一个新变量 (weak myself)。然后将该弱变量传递给新类的函数并执行任何您想做的事情。

在您的第二个示例中,您正在新类范围内的函数内创建一个新变量(weak myself)。由于您使用强引用 self 在新类中创建了该变量,因此您在新类中对 ViewController 有了强引用。

关于ios - 两个类之间的弱变量和指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39167774/

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