我可以在 Swift 中以编程方式删除/删除类实例吗

Sid*_*off 2 instances removeclass ios swift

我有数千行链接动画代码。我已将其全部移至 GraphicsHelper 类,并引用回 ViewController 中的数据。一旦我完成了代码,我想放弃类实例,因为我可以保持内存(和我的视图控制器代码)较小。视图控制器在整个应用程序运行的几个“阶段”期间保持在范围内。有没有办法以编程方式断开辅助类的类实例?我尝试分配 nil 但收到一个错误,该类不符合 NilLiteralConverter 协议。有什么方法可以断开实例连接,或者可以替代我认为的大量代码问题吗?谢谢大家。难道世界上只有我一个人想做这样的事吗?

rde*_*mar 5

您需要将类的实例变量声明为可选,

class ViewController: UIViewController {
    var helper: GraphicsHelper!

    override func viewDidLoad() {
        super.viewDidLoad()

        helper = GraphicsHelper()
        // some time later
        helper = nil // no errors on this line, GraphicsHelper deinit called
    }
}
Run Code Online (Sandbox Code Playgroud)

  • '惰性变量 GraphicsHelper?= GraphicsHelper()' 可能是对此解决方案的改进。您使用的是显式展开的可选,它比纯可选安全性要低得多。惰性实例化还有助于稍微分离您的代码。 (2认同)