美文网首页
iOS:weak和unowned

iOS:weak和unowned

作者: Liu____ | 来源:发表于2021-11-19 14:48 被阅读0次

既然Weak和unowned引用都不会增加引用计数,它们都能用于解除引用循环。那么我们该在什么使用它们呢?根据苹果文档

“Use a weak reference whenever it is valid for that reference to become nil at some point during its lifetime. Conversely, use an unowned reference when you know that the reference will never be nil once it has been set during initialization.”

翻译:在引用对象的生命周期内,如果它可能为nil,那么就用weak引用。反之,当你知道引用对象在初始化后永远都不会为nil就用unowned.

点击bu,self释放,crash

self.commentBu.addTarget(for: .touchUpInside) {[unowned self] bu in
            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5, execute: {
                self.view.showHUD(title: "1233")
                print("12321312")
            })
        }

点击bu,self释放,正常

        self.commentBu.addTarget(for: .touchUpInside) {[unowned self] bu in
            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5, execute: {
                self?.view.showHUD(title: "1233")
                print("12321312")
            })
        }

相关文章

  • iOS:weak和unowned

    既然Weak和unowned引用都不会增加引用计数,它们都能用于解除引用循环。那么我们该在什么使用它们呢?根据苹果...

  • [译]Swift中的weak self和unowned self

    在找关于weak和unowned方面的知识,看到的一篇文章。 原文来自Weak self and unowned ...

  • Swift 内存管理,weak 和 unowned

    在内存管理中,weak和unowned都可以防止发生引用循环问题,但是weak和unowned的区别在哪里呢? u...

  • unowned和weak的区别—swift

    weak引用和unowned引用有些类似但不完全相同。Unowned 引用,像weak引用一样,不会增加对象的引用...

  • 内存管理

    三种引用 weak unowned的使用限制 weak unowned只能用在类实例上面 协议遵守AnyObjec...

  • weak和unowned

    一、循环引用 如图所示的情况中,john指向的对象强引用了unit4A指向的对象,而unit4A指向的对象又强引用...

  • weak和unowned

    unowned: 假设引用对象在生命周期总是存在,这样其属性声明是非可选类型。 weak: 对象在预见时间内可能为...

  • WEAK 和 UNOWNED

    相同 1、weak和unowned都不会增加引用计数器 2、两者都是为了避免循环引用而存在的 区别 1、weak指...

  • ios 内存管理,weak和unowned

    悬挂指针及内存泄漏# 如果对象a指向对象b,若对象b被释放了,则此时对象a指向一个未知地址,这种情况叫做悬挂指针。...

  • Swift中关于unowned的坑

    “Like a weak reference, an unowned reference does not kee...

网友评论

      本文标题:iOS:weak和unowned

      本文链接:https://www.haomeiwen.com/subject/pjzstrtx.html