【问题标题】:ARC in Swift 2.2 deinit getting called - still having one referenceSwift 2.2 deinit 中的 ARC 被调用 - 仍然有一个引用
【发布时间】:2016-03-29 16:06:52
【问题描述】:

我指的是来自 developer.apple.com 的 swift 2.2 中的 ARC(请参阅:-link

我有下面的代码,调用了 denit 方法,但我的引用 3 var 没有设置为 nil ,谁能解释为什么调用 denit ?

在 person.swift 类中

class Person {
    let name: String
    init(name: String) {
        self.name = name
        print("\(name) is being initialized")
    }
    deinit {
        print("\(name) is being deinitialized")
    }
}

在我的视图控制器中

   var reference1 : Person?
    var reference2 : Person?
    var reference3 : Person?

    reference1 = Person(name:"John Apple")

    reference2 = reference1
    reference3 = reference1

    reference1 = nil
    reference2 = nil

输出:-

John Apple is being initialized
John Apple is being deinitialized

【问题讨论】:

    标签: swift2 automatic-ref-counting


    【解决方案1】:

    我会大胆猜测,因为reference3 是一个局部变量,而不是一个实例变量,所以当方法返回时它会超出范围。

    顺便说一句,那个人的名字是 John Appleseed,而不是 John Apple :)

    【讨论】:

    • 你好 trojanfoe......你能粘贴你的代码版本,我可以在 xcode 中测试相同的运行情况。
    • @Max 我不明白你的意思。您想知道为什么要释放该对象;没有损坏的代码。
    猜你喜欢
    • 2015-10-21
    • 2015-05-15
    • 2019-12-14
    • 2019-09-26
    • 2014-08-13
    • 2021-05-16
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    相关资源
    最近更新 更多